2016-10-13 3 views
1

У меня есть массив, и мне нужно получить элементы из массива внутри цикла. Позвольте мне объяснить,Javascript - выборка элементов из массива динамически

var globalArray = ['apple','orange','melon','banana'], 
    loopLimit = 5, 
    fruitsPerLoop = 3; 

for (var i=1; i<=loopLimit; i++) { 
    // when the loop runs for the first time i need to grab the first 3 elements from the array since fruitsPerLoop is 3 and for the second time the next 3 (out of bound should be taken care) and for third time etc... 
    //Pseudo with fruitsPerLoop as 3 
    when i = 1 ==> globalArray should be ['apple','orange','melon'] 
     i = 2 ==> globalArray should be ['banana', 'apple','orange'] 
     i = 3 ==> globalArray should be ['melon','banana', 'apple'] 
     i = 4 ==> globalArray should be ['orange','melon','banana'] 
     i = 5 ==> globalArray should be ['apple','orange','melon'] 
} 

Я имел в виду underscore.js и пытается использовать некоторые нативные методы, как хорошо, но это ломает в какой-то момент.

+0

Таким образом, вы хотите, чтобы повернуть массив? См. Http://stackoverflow.com/questions/1985260/javascript-array-rotate – Barmar

+0

Um 'loopLimit' - это число, поэтому почему' loopLimit.length'? Разве это не должно быть 'loopLimit'? –

+0

@Unicode вы правы, отредактированы – Sai

ответ

0

Как о создании рекурсивной функции для определения индекса: -

var globalArray = ['apple', 'orange', 'melon', 'banana'], 
 
    loopLimit = 5, 
 
    fruitsPerLoop = 3; 
 

 
function getIndex(i, minus) { 
 
    var index = i - minus; 
 
    if (index < 0) 
 
    return getIndex(globalArray.length, minus - i) 
 
    return globalArray[index]; 
 
} 
 

 
for (var i = 1; i <= loopLimit; i++) { 
 
    console.log([getIndex(1, i), getIndex(2, i), getIndex(3, i)]) 
 
}

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