#javascript #arrays
#javascript #массивы
Вопрос:
У меня есть два массива 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]
Ответ №1:
Вы можете перебирать каждый элемент каждого отдельного массива. Приведенное ниже решение может работать только для трех вложенных массивов, но если вам нужно решение для работы с переменным числом вложенных массивов, вам может понадобиться рекурсивная функция.
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. это может выполнить arry1, но не может решить arry1 длина изменяется. например , array1 = [[1,2],[3,4],[5,6,7],[8,9],[0,11]] мы не можем, как долго array1 и мы foreach сколько раз.
Ответ №2:
Я нашел лучший ответ на этот вопрос. и я забыл нажать на него. теперь я это сделаю
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;
}