【发布时间】:2020-08-04 12:42:15
【问题描述】:
我有 n 个结构类似的数组
[{val_1: 2}, {val_1: 3}];
[{val_2: 2}];
[{val_3: 1}];
等等
我想创建一个结构类似于
的单个数组[{val_1: 2, val_2: 2, val_3: 1}, {val_1: 3, val_2: 2, val_3: 1}]
在其中比较所有数组并产生每个可能的输出。在下面的代码中,我有 3 个数组。一个有 4 个值、2 个值和 3 个值。我希望它返回 24 个不同的数组,显示所有可能的组合。
var val_1 = 3
var val_2 = 2
var val_3 = 1
var total_val = 3;
var useable = 50;
var array_1 = new Array();
var array_2 = new Array();
var array_3 = new Array();
var array_1_c = new Array();
var array_2_c = new Array();
var array_3_c = new Array();
for(val_1; val_1 <= total_val && val_1 <= useable; val_1+=1){
array_1 = [{val_1}];
array_1.map(test =>{
return{val_1}
}).forEach(test => array_1_c.push(test));
};
var val_1 = 2
for(val_1; val_1 >= 0; val_1-=1){
array_1 = [{val_1}];
array_1.map(test =>{
return{val_1}
}).forEach(test => array_1_c.push(test));
};
for(val_2; val_2 <= total_val && val_2 <= useable; val_2+=1){
array_2 = [{val_2}];
array_2.map(test =>{
return{val_2}
}).forEach(test => array_2_c.push(test));
};
for(val_3; val_3 <= total_val && val_3 <= useable; val_3+=1){
array_3 = [{val_3}];
array_3.map(test =>{
return{val_3}
}).forEach(test => array_3_c.push(test));
}; console.log(array_1_c);console.log(array_2_c);console.log(array_3_c);
如何完成这样的事情? permute 函数似乎是要走的路,但我找不到输出每个组合的方法。如果创建数百万个组合,我应该走不同的路线而不是使用对象数组。
谢谢!
【问题讨论】:
-
嗨,您能解释一下您是如何评估大小为 4、2 和 3 的数组的 12 种组合的吗?
-
不知道为什么这被否决了。
-
对不起,我的意思是 24 种组合*。 4 * 2 * 3 = 24。结果需要是每个值的顺序组合。
-
我猜你需要
Cartesian product的解决方案,而不是排列。看看:stackoverflow.com/questions/56972012/…这个问题有你的问题的相关答案。
标签: javascript arrays typescript