Массив для комбинирования

У меня есть два массива 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,3,5], [2,3,6], [2,3,7], [2,4,5], [2,4,6], [2,4, 7]

javascript,arrays,

-2

Ответов: 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;
}
JavaScript, массивы,
Похожие вопросы