2014-03-01 152 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,如果你想支持旧版浏览器。