阵列组合以保持遍历

问题描述 投票:-2回答:2

我有两个JavaScript数组:

是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,3,5],[2,3,6],[2,3,7],[2,4,5],[2,4,6],[2,4, 7]

javascript arrays
2个回答
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);

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.