我有一个包含多个其他数组的大型数组。例如
let allLines = [['a', 'b'], ['c', 'd', 'e'], ['f', 'g', 'h']];
我需要一个合并数组项并将其可能的组合追加到textarea中的函数。他们需要像这样合并:
[a, c, f] [a, c, g] [a, c, h] [a, d, f] [a, d, g] [a, d, h] [a, c, f] ...
所有可能的组合应循环生成,并将其附加到textarea。在此示例中,可能有18种组合。我已经尝试过这样的事情:
let lengths = allLines.map(function(a){return a.length;}); let biggest = Math.max.apply(null, lengths); a = []; for (let i = 0; i < allLines.length; i++) { for (let j = 0; j < biggest; j++) { if(allLines[i][j] == undefined) { break; } a[i] = allLines[i][j]; } // console.log(a); }
有任何想法吗?
您可以构建笛卡尔积。
const
values = [['a', 'b'], ['c', 'd', 'e'], ['f', 'g', 'h']],
result = values.reduce((a, b) => a.reduce((r, v) => r.concat(b.map(w => [].concat(v, w))), []));
result.map(a => console.log(...a));
.as-console-wrapper { max-height: 100% !important; top: 0; }