循环遍历每个数组的每个项目,但仅限于第一个数组的长度

时间:2014-04-15 07:34:59

标签: javascript arrays loops

我有一系列元素数组,如下所示:

var result = [
// outer array
    [
    // inner first array
        {name: 'A', value: 111},
        {name: 'B', value: 222},
        {name: 'C', value: 333},
        ...
    ],
    [
    // inner subsequent arrays #2
        {name: 'D', value: 55},
        {name: 'E', value: 99},
        ...
    ],
    // inner subsequent arrays #3
        {name: 'F', value: 1000},
        ...
    ],
    ...
    ...
]

我想浏览每个元素(A-F)但仅针对第一个数组(A-C)的每个元素。

像这样:

AA,AB,AC,AD,AE,AF

BB,BC,BD,BE,BF

CC,CD,CE,CF

编辑:我不知道任何数组的长度,所以我不能使用任何常量。

此外,它不仅仅是2个数组(上面更新的例子)。

2 个答案:

答案 0 :(得分:1)

// Reduce all the arrays into a single array
var result = result.reduce(function(result, current) {
    return result.concat(current);
}, []);

// Iterate till the end of the first array
for (var i = 0; i < result[0].length; i += 1) {
    // Start from the current i and iterate till the end
    for(var j = i; j < result.length; j += 1) {
        console.log(result[i].name + result[j].name);
    }
}

<强>输出

AA
AB
AC
AD
AE
AF
BB
BC
BD
BE
BF
CC
CD
CE
CF
...
...

答案 1 :(得分:1)

@ thefourtheye的解决方案非常聪明,但我认为它缺少你问题的主要要求。以下是您可以解决的问题:

// Reduce all the arrays into a single array
var firstArray = result[0],
    allItems = result.reduce(function(result, current) {
        return result.concat(current);
    }, []), i, j;

// Iterate till the end of the array
for (i = 0; i < firstArray.length; i += 1) {
    // Start from the current i and iterate till the end
    for(j = i; j < allItems.length; j += 1) {
        console.log(firstArray[i].name + allItems[j].name);
    }
}