如何遍历另一个数组中每个数组的每个成员?

时间:2011-07-20 04:28:26

标签: javascript arrays

说有阵列数组。

n = [ a = ["foo","bar"],
      b = ["foo2","bar2"],
      c = ["foo3","bar3"],
      d = ["foo4","bar4"],
      e = ["foo5","bar5"] ]

循环遍历所有foobar s的最简单语法是什么?

3 个答案:

答案 0 :(得分:2)

如果根据你的例子(小提琴 - http://jsfiddle.net/pvqtz/)你总是在内部数组中有两件事:

for (var index = 0; index < n.length; index++) {
    var foobar = n[index];
    var foo = foobar[0];
    var bar = foobar[1];
    alert(foo + bar);
}

对于任意数量的事物,使用嵌套循环(小提琴 - http://jsfiddle.net/pvqtz/1/):

for (var index = 0; index < n.length; index++) {
    var innerArray = n[index];
    for (var innerIndex = 0; innerIndex < innerArray.length; innerIndex++) {
        var elem = innerArray[innerIndex];
        alert(elem);
    }
}

答案 1 :(得分:0)

如果您的环境支持它,我倾向于forEach为此:

n.forEach(function(n2) { 
    n2.forEach(function(val) {
        console.log(val) 
    })
});

只是为了它,如果你正在处理任意深度的嵌套数组,你可以递归:

function visit(a, f) {
    if (Array.isArray(a)) {
        a.forEach(function(a2) { 
            visit(a2, f)
        })
    } else f(a);
}

n = ["foo",["foo1", "bar1"], ["foo2", ["foo3","bar3"]]];
visit(n, function(val) { console.log(val) });

答案 2 :(得分:0)

在一个循环中迭代食物和酒吧:

var i = -1;
while (i++ < n.length) 
    alert (n[i][0]+":"+n[i][1]);

for (var i = 0; i < n.length; i++) 
    alert (n[i][0]+":"+n[i][1]);

要遍历所有食物,然后覆盖所有食物:

var i = -1, j = -1;
while (i++ < 2) 
    while (j++ < n.length) 
        alert (n[j][i]);

for (var i = 0; i < 2; i++) 
    for (var j = 0; j < n.length; j++) 
        alert (n[j][i]);