Arrays nodejs中跨阵列的所有可能组合
假设我有三个数组:Arrays nodejs中跨阵列的所有可能组合,arrays,node.js,algorithm,Arrays,Node.js,Algorithm,假设我有三个数组: var arr1 = ['red', 'orange', 'yellow',]; var arr2 = ['car', 'bus']; var arr3 = ['china']; 如何获得以下组合: 1.订单事宜, 2.每个结果(可以是数组)应包含每个arr的0..1个元素 3.arr1、arr2、arr3的元素可以出现0..1次: red,car,china red,china,car car,red,china car,china,red china,car,red
var arr1 = ['red', 'orange', 'yellow',];
var arr2 = ['car', 'bus'];
var arr3 = ['china'];
如何获得以下组合:1.订单事宜,
2.每个结果(可以是数组)应包含每个arr的0..1个元素
3.arr1、arr2、arr3的元素可以出现0..1次:
red,car,china
red,china,car
car,red,china
car,china,red
china,car,red,
china,red,car
red,bus,china
red,china,bus
bus,red,china
bus,china,red
china,bus,red,
china,red,bus
orange,car,china
orange,china,bus
bus,orange,china
bus,china,orange
china,bus,orange,
china,orange,bus
orange,bus,china
orange,china,bus
bus,orange,china
bus,china,orange
china,bus,orange,
yellow,car,china
yellow,china,car
car,yellow,china
car,china,yellow
china,car,yellow,
china,yellow,car
yellow,bus,china
yellow,china,bus
bus,yellow,china
bus,china,yellow
china,bus,yellow,
china,yellow,bus
red,car
car,red
red,bus
bus,red
orange,car
car,orange,
orange,bus
bus,orange,
yellow,car
car,yellow,
yellow,bus
bus,yellow,
red,china
china,red,
orange,china
china,orange,
yellow,china
china,yellow,
car,china
china,car,
bus,china
china,bus,
red,
orange,
yellow,
car,
bus,
china,
我不知道如何控制每个arr元素中的出现时间,我的代码如下:
function get_titles_appearances(titles_columns) {
titles_columns = titles_columns || [];
var n = titles_columns.length;
if (n === 0) { return [] }
if (n === 1) { return titles_columns[0] }
var save = function () {
var m = groups.length, c = [];
while (m--) { c[m] = groups[m] }
rtn.push(c);
}
var i = 0, len = 0, counter = [], groups = [], rtn = [];
for (; i < n; i++) {
counter[i] = 0;
groups[i] = titles_columns[i][0];
}
save();
while (true) {
i = n - 1, len = titles_columns[i].length;
if (++counter[i] >= len) {
while (counter[i] >= len) {
if (i === 0) { return rtn }
groups[i] = titles_columns[i][0];
counter[i--] = 0;
counter[i]++;
len = titles_columns[i].length;
}
}
groups[i] = titles_columns[i][counter[i]];
save();
}
}
_.forEach(get_titles_appearances(titles_columns_config_default), function (value) {
// titles_appearances.push( _.join(value, '')+"':'"+_.join(value, ','))
titles_appearances = titles_appearances+"{"+ _.join(value, '')+":"+_.join(value, ',')+"},"
})
titles_columns_config_default refer to [arr1,arr2,arr3]
函数获取标题外观(标题列){
titles_columns=titles_columns | |[];
var n=标题和列的长度;
如果(n==0){return[]}
如果(n==1){返回标题\u列[0]}
var save=函数(){
var m=groups.length,c=[];
而(m--){c[m]=群[m]}
rtn.push(c);
}
变量i=0,len=0,计数器=[],组=[],rtn=[];
对于(;i=len){
while(计数器[i]>=len){
如果(i==0){return rtn}
组[i]=标题和列[i][0];
计数器[i--]=0;
计数器[i]++;
len=标题\列[i]。长度;
}
}
组[i]=标题和列[i][counter[i]];
save();
}
}
_.forEach(获取标题\外观(标题\列\配置\默认)、函数(值){
//标题u外观.push(u.join(值,)+“:”“+u.join(值,”,”)
titles\u外观=titles\u外观+“{”+\u.join(值,)+”:“+\u.join(值,,)+”
})
标题\列\配置\默认值参考[arr1、arr2、arr3]
请不要发布编程作业。发布关于您编写的代码的问题。我想您应该首先检查排列与组合您错过了一些结果,其中包括所有1和0元素的结果。thx各位,我做了一些编辑,如果仍然不正确,我可以删除它不,这样更好。缩进应该是固定的,这样就可以了!请不要发布编程作业。发布关于您编写的代码的问题。我想您应该首先检查排列与组合您错过了一些结果,其中包括所有1和0元素的结果。thx各位,我做了一些编辑,如果仍然不正确,我可以删除它不,这样更好。缩进应该是固定的,这样就可以了!