我正在寻找一种从多个数组生成所有可能组合的方法。当涉及到 1 时,我能够找到解决方案,但是当涉及到更多时,就会出现问题。为了更容易理解我的问题,假设我们有这两个数组:['small','big']
and ['red', 'green']
,我想要得到的结果是:
小绿球,小红球,大绿球,大红球,绿球,红球,小球,大球,绿小球,红大球等。
对我来说最大的困难是弄清楚你将如何做到这一点,每个阵列都不会有任何重复,例如:small large ball或green red ball。
这是我的解决方案
let sizes = ['small', 'medium sized', 'big']
let colors = ['green', 'red', 'blue']
let objects = ['ball', 'square']
const flatten = list => list.reduce(
(a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), []
);
function uniqeCombine(...data) {
const flat = flatten(data);
return flat.reduce( (acc, v, i) =>
acc.concat(flat.slice(i+1).map( w => v + ' ' + w )),
[]);
}
console.log(uniqeCombine(sizes, colors, objects))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句