向多维数组添加和请求值

时间:2015-04-05 20:06:35

标签: javascript arrays object

我创建了一个像这样的多维数组:

var lang_arr = {};
$('#language li a img').each(function(index) {
    var lang_arr_helper = [];
    lang_arr_helper.push(langi);
    lang_arr_helper.push(getnumber);
    lang_arr.push(lang_arr_helper);
});

之后我想用循环调用它:

for (index=0;index < lang_arr.length;++index)
{
  alert(lang_arr[index][0]+" "+lang_arr[index][1]);
}

如果数组或对象无关紧要,那么如何调用它,但需要循环。如何使用数组和/或对象完成此操作?

谢谢!

2 个答案:

答案 0 :(得分:0)

Array.prototype.forEach将是迭代多维javascript数组的便捷方式:

var arr = [[1,2,3],[42,24],[8,9,10]];

arr.forEach(function(sub,i1) {
  sub.forEach(function(item,i2) {
    console.log("["+i1+","+i2+"] = "+item);
  })
});

这将输出

[0,0] = 1
[0,1] = 2
[0,2] = 3
[1,0] = 42
[1,1] = 24
[2,0] = 8
[2,1] = 9
[2,2] = 10 

要迭代对象,请使用for(key in obj)构造,这将循环所有可枚举属性。

var obj = {
    a:{a:1,b:2,c:3},
    b:{x:42,y:24},
    c:{u:8,v:9,w:10}
};

for(var key in obj) for(var i in obj[key]) {
  console.log("["+key+","+i+"] = "+obj[key][i]);
}

产生

[a,a] = 1
[a,b] = 2
[a,c] = 3
[b,x] = 42
[b,y] = 24
[c,u] = 8
[c,v] = 9
[c,w] = 10 

答案 1 :(得分:0)

您创建了一个对象而不是一个Array。要创建数组,您应该:

var lang_arr_helper = new Array();

var lang_arr_helper = {};

就像你第一次这样做一样。

使用[]时,它会创建一个没有.length属性的Object。这就是for for for for for for for for for for for for for for。