2014-03-01 198 views
2

JavaScript的迭代我有一個數組如下:通過陣列

levelinfoarray["test"] = new Array(16,20,4,5,"Test level"); 
levelinfoarray[1] = new Array(29,25,17,13,"Introduction"); 
levelinfoarray[2] = new Array(16,24,6,4,"Counting..."); 
levelinfoarray[3] = new Array(16,20,4,5,"Where am I going?"); 
... 

我想通過數組進行迭代,並獲得級別數量和級別描述這樣

Test) Test level 
1) Introduction 
2) Counting... 
3) Where am I going? 
... 

我已經嘗試了對循環和forEach,但都只給我編號的條目。我將如何獲得「測試」條目?

+1

對於JavaScript數組,混合使用數字鍵和非數字鍵是不現實的。數組都是關於數字索引的屬性。 – Pointy

回答

4

當數組具有非數字鍵時,它實際上是一個對象。使用for...in

for (key in levelinfoarray) { 
    if (levelinfoarray.hasOwnProperty(key)) { 
     console.log(key+') '+levelinfoarray[key][4]); 
    } 
} 

P.S.不使用new Array,使用數組文本:

levelinfoarray["test"] = [16,20,4,5,"Test level"]; 
+0

這會起作用,但重要的是要注意屬性遍歷的順序是未定義的。 – Pointy

+0

數組始終是一個對象。使用_strings_作爲鍵 – sabof

+0

這很好,它將測試數組放在列表的末尾,這很好。 – Patrick

1

要遍歷:

Object.keys(levelinfoarray).forEach(function(key) {console.log(key)}); 

你必須填充工具Object.keysArray.prototype.forEach,如果你想支持舊版瀏覽器。