2016-04-21 2 views
1

У меня есть 2 массива вроде [2,3] и [1000,1200,500,600,1600]. Мне нужно написать for loop для этого.Как сделать динамический цикл?

индекс 1.Start от 0 и конечного индекса на 2.

времени 2.Start от 2 и конечного индекса с суммой первого элемента 2 (2 + 3) = 5.

var arr = [2,3]; 
for(var i = 0; i<arr.length;i++) 
{ 
    //this loop runs 2 time 
    for(var j = 0 ; j < 2 ; j++)//for the first time 
    for(var j = 2 ; j < 5 ; j++)//for the second time 

} 

Как сделать этот динамический цикл? Может кто-нибудь, пожалуйста, помогите мне составить код?

+0

Вам нужно что-то вроде этого? 'var arr = [2, 3]; для (var i = 0; i

+0

Да, но динамически @JohnR – Anu

+0

Предполагается, что это будет более общий? То есть может 'arr' иметь 5 или 10 элементов? –

ответ

1

Это будет делать то, что вы хотите, и будет удлинению.

var arr = [2,3]; 
var sum = 0; 
for(var i = 0; i<arr.length;i++) 
{ 
    sum += arr[i] 
    if (i === 0) { 
     for(var j = 0 ; j < arr[0] ; j++) 
     // Do first thing 
    } 
    if (i > 0) { 
     for(var j = arr[0] ; j < sum ; j++) 
     // Do second thing 
    } 
} 
+0

Мне нужно динамически изменять индекс начала и конца индекса. @EngineerCamp – Anu

+0

начальный индекс не должен быть 0 altime @EngineerCamp – Anu

+0

@Anu Я обновил пример - это помогает? – EngineerCamp

0

ли что-то вроде этого:

var k = 0; 
for(var j = 0 ; j < 2 ; j++) { 
k+=arr[j]; 
}//for the first time 
    for(var i = 2 ; i < k ; i++) { 
     //other code 
} 
1

Надеюсь, вы ожидаете этого.

var arr = [2, 3]; 
for (var i = 0; i < arr.length; i++) { 
    //this loop runs 2 time 
    if (i == 0) { 
     //for the first time 
     for (var j = 0; j < arr[0]; j++) { } 
    } else if (i == 1) { 
     //for the second time 
     var totalSum = arr[0] + arr[1]; 
     for (var j = arr[0]; j < totalSum; j++) //for the second time 
     { } 
    } 
} 
1

Если вы хотите, чтобы быть универсальным, то есть у вас есть массив arr, содержащие счетчики элементов для обработки, вы можете сделать это следующим образом:

var arr = [2,3]; 

// k is the index into the second array, initialize to 0 here 
for(var i = 0, k = 0; i < arr.length;i++) 
{ 
    //this loop runs for each element in the arr[] array 
    for(var j = 0 ; j < i; j++, k++) // increment k 
    { 
     // k is now the value you want: 
     // first time through the loop 0, 1 
     // second time through the loop 2, 3, 4 
    } 
} 

Другой твик будет просто следить за стартового элемента, если для значения j важно:

var arr = [2,3]; 
var start = 0; 
for(var i = 0; i < arr.length; i++) 
{ 
    var end = start + arr[i]; // end is 2,5 in sample 
    for(var j = start ; j < end; j++) 
    { 
     // first time through the loop 0, 1 
     // second time through the loop 2, 3, 4 
    } 
    start = end; // now start at the next index, 0,2 in sample 
} 
+0

С помощью этого мне нужно получить доступ к другому массиву, я мог бы получить только первый элемент @Jason Goemaat – Anu

+0

Я сделал скрипку со своим вторым ответом https://jsfiddle.net/endqw21u/ 2/Пожалуйста, уточните это с помощью @Jason Goemaat – Anu

Смежные вопросы