阵列组合以保持遍历

时间:2016-10-13 03:02:02

标签: javascript arrays

我有两个JavaScript数组:

var array1 = [[1,2],[3,4],[5,6,7]];

我希望输出为: [1,3,5],[1,3,6],[1,3,7],[1,4,5],[1,4,6],[1,4,7],[2 1,3,5],[2,3,6],[2,3,7],[2,4,5],[2,4,6],[2,4,7]

2 个答案:

答案 0 :(得分:0)

您可以迭代每个单独数组的每个元素。下面的解决方案可能仅适用于三个嵌套数组,但如果您需要一个解决方案来处理可变数量的嵌套数组,则可能需要一个递归函数。



var array1 = [
  [1, 2],
  [3, 4],
  [5, 6, 7]
];
var outputArrays = [];
array1[0].forEach(function(firstElement) {
  array1[1].forEach(function(secondElement) {
    array1[2].forEach(function(thirdElement) {
      outputArrays.push([firstElement, secondElement, thirdElement]);
    });
  });
});
console.log('output arrays: ',outputArrays);




答案 1 :(得分:0)

我确实找到了这个问题的更好答案。我忘了推它现在我会这样做

var arr = [
  [1,2],
  [3,4],
  [5,6,7]
];
/* what I want is
    [[1],[2]]                                    arr i=0
    [[1,3],[1,4],[2,3],[2,4]]                    arr i=1
    [[1,3,5],[1,3,6],[1,3,7],.....[2,4,7]]       arr i=2
*/
function comarr(arr){
   var narr = [[]];//empty
   for(var i=0;i<arr.length;i++){
     var barr = [];
     for(var m=0;m<narr.length;m++){
       for(var n=0;n<arr[i].length;n++){
         barr.push(narr[m].concat(arr[i][n]))
       }
     }
     narr = barr;
   }
   return narr;
}