我正在解决通过n个给定数组进行置换的一个有点奇怪的问题。
我们说我有3个阵列(但可能还有更多):
我想计算这3个阵列长度的所有可能排列。
结果应如下所示:
我实际上需要像这样的输出。我没有'关心点上分配给数组的值。
很遗憾,我没有任何可用的代码可供分享。一旦我想出一些甚至可以远程工作的东西,我就会立即更新这篇文章。
答案 0 :(得分:3)
您可以将嵌套的reduce结构用于给定数组的任意长度值。
var words = [['quick', 'lazy'], ['brown', 'black', 'grey'], ['fox', 'dog']],
result = words.reduce((a, b) => a.reduce((r, v) => r.concat(b.map(w => [].concat(v, w))), []));
console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }

你可以采取更详细的方法,在那里你可以为收集的结果添加一些逻辑来进行推送。
function getCombinations(array) {
function iter(i, p) {
if (i === array.length) {
result.push(p); // <==================== use the items
return;
}
array[i].forEach(function (a) {
iter(i + 1, p.concat(a));
});
}
var result = [];
iter(0, []);
return result;
}
var words = [['quick', 'lazy'], ['brown', 'black', 'grey'], ['fox', 'dog']],
result = getCombinations(words);
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;