2015-11-07 38 views
2

的javascript遍歷陣列我有數組:使用如圖案

array = ["One","Two","Three","Four"] 

我想使它用作圖案通過環狀

for(var i=0; i<10; i++){ 

從數組索引獲取動態值,所以在這種情況下,我的目標是有:

one two three four one two three four one two 
+6

[''%操作](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Remainder_()) - >'變種IDX =我%array.length;' – Andreas

+0

注意:這不會是無限的,因爲仍然有結束。這只是重複。 –

+0

你是否想要退出循環? –

回答

0

如果你想要一個無限循環只是創建一個這樣的:

var num = 0; 
while(true) { 
    var element = array[num]; 
    if(num == array.length - 1) { 
     num = 0; 
    } else { 
     num++; 
    } 

    //when you are done 
    //break; 
} 

您將使用元素變量作爲數組中的每個字符串或元素。當你完成時,只需打電話給'break'。

0

我想你想要做的事像下面,你想要得到的指數爲i % array.length(JavaScript代碼):

var array = ["One","Two","Three","Four"]; 
var results = []; 

for (var i = 0; i < 10; i++) { 
    var word = array[i % array.length]; 
    results.push(word); 
    // console.log(word); 
} 

console.log('this is the result: ' + results); 
0

這只是打印您正在尋找

輸出邏輯

語法,你可以用任何語言

var l=array.length 
counter=0 
for(var i=0; i<10; i++){ 

if(counter=l){ 
print array[counter] 
counter=0 
} 
else 
{ 
print array[counter] 
counter=counter+1 
} 
} 
-1
var array = ["One", "Two", "Three", "Four"] 
    var limit = 10; 
    var asarray = true; 
    var newarray = concatArray(array, limit, asarray); 

    function concatArray(array, limit, asarray) { 
     var size = array.length, counter = 0, newarray = []; 
     for (var i = 0; i <= size; i++) { 
      i = (i === size) ? 0 : i; 
      if (counter <= limit) { 
       newarray.push(array[i]); 
      } else { 
       break; 
      } 
      counter++; 
     } 
     return newarray = (asarray === true) ? newarray : newarray.join(" "); 
    } 

asarra變化y = true

[「One」,「Two」,「Three」,「Four」,「One」,「Two」,「Three」,「Four」,「One」,「Two」,「Three 「]

asarray =假

一二三四一二三四一二三

-1

您可以使用原來的陣列只要你想Concat的本身多次,甚至沒有改變原來的像這樣:

array.concat(array).concat(array).concat(array) 
// ["One", "Two", "Three", "Four", "One", "Two", "Three", "Four", "One", "Two", "Three", "Four", "One", "Two", "Three", "Four"] 

此外,你可以使用一個有趣的在這裏你可以傳遞你希望數組重複的時間,這樣你就不必處理所有這些調用。

var arr = [1, 2, 3, 4]; 

function concatArray(array, times) { 
    var result = [], i = 0; 

    for (; i < times; i += 1) { 
    result = result.concat(array); 
    } 

    return result; 
} 

concatArray(arr, 3); // [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4] 

最後,如果你想修改的結果數組有一定的數量的項目,或過濾,或將它們映射,或什麼的,你可以回調添加到您的功能。

var arr = [1, 2, 3, 4]; 

function concatArray(array, times, cb) { 
    var result = [], i = 0; 
    for (; i < times; i += 1) { 
    result = result.concat(array); 
    } 

    if (cb && typeof cb == 'function') { 
    result = cb(result); 
    } 

    return result; 
} 

var final = concatArray(arr, 3, function(a) { 
    return a.slice(0, 10); 
}); 

console.log(final) // [1, 2, 3, 4, 1, 2, 3, 4, 1, 2] 
+0

你不回答這個問題。問題是關於在簡單循環中基於索引添加數組值。這是一個典型的過度生產,會產生瘋狂的慢速網站。 – cpugourou

+0

這是一個更好的方法和更完整的,我給更好的選擇與更多的控制和更好的機會來創建可重複使用的代碼 –

+0

它既不是更完整,也沒有更好的控制。 – cpugourou