不确定个数的数组,要求出所有的组合值
let arr=[['白色','红色','黑色'],['大','中','小'],['10cm'].....]
结果:
["白色,大,10cm","白色,中,100cm","白色,小,10cm","红色,大,10cm"....]
结果一定是按第一个数组按在最前的顺度,先拿到所以“白色”的组合,再去拿“红色”,再拿“黑色”,有人有思路吗??
不确定个数的数组,要求出所有的组合值
let arr=[['白色','红色','黑色'],['大','中','小'],['10cm'].....]
结果:
["白色,大,10cm","白色,中,100cm","白色,小,10cm","红色,大,10cm"....]
结果一定是按第一个数组按在最前的顺度,先拿到所以“白色”的组合,再去拿“红色”,再拿“黑色”,有人有思路吗??
function combination(arr) {
return arr.reduce((pre, cur) => {
let res = [];
pre.forEach(_pre => {
cur.forEach(_cur => {
res.push(_pre.concat([_cur]));
})
})
return res;
}, [[]])
}
let arr = [['白色', '红色', '黑色'],['大', '中', '小'],['10cm']]
results = [];
result = [];
doExchange(arr, 0);
function doExchange(arr, index){
for (var i = 0; i<arr[index].length; i++) {
result[index] = arr[index][i];
if (index != arr.length - 1) {
doExchange(arr, index + 1)
} else {
results.push(result.join(','))
}
}
}
console.log(results)
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.2k 阅读
之前写了一篇文章,给出了全组合实现和原理:JS全组合实现