我有一个这种形式的数组......
现在我想生成所有可能的变化,其中我有一个数组,第一个项目与其他元素相结合,第二个元素与其他元素相结合,依此类推。像:
总结一下,对于下面的输入数组:
[[11, 12], [21, 22], [31, 32]];
我需要获得一个像
这样的输出数组[[11, 21, 31], [11, 21, 32], [11, 22, 31], [11, 22, 32], [12, 21, 31], [12, 21, 32], [12, 22, 31], [12, 22, 32]];
有人可以帮助我在javascript中如何做到这一点吗?
非常感谢你!
答案 0 :(得分:0)
我提出这个解决方案。为了决定选择子数组iside输入数组的索引,我使用数组维数模数全局索引:
var input = [[11, 12], [21, 22], [31, 32]];
var dim = Math.pow(2, input.length);
var output = new Array(dim);
output.fill(0);
input.forEach((x,i) => {
var limit = dim / Math.pow(2, i+1);
output.forEach((y,j,arr) => {
var index = Math.floor((j+1)/limit) % 2;
if (i === 0)
arr[j] = [x[index]];
else
arr[j].push(x[index]);
});
});
console.log(output);