我正在寻找一种从多个数组生成所有可能组合的方法。当涉及到1时,我能够找到解决方案,但是当涉及到更多时,就会出现问题。为了更容易地理解我的问题,假设我们有这两个数组: ['small','big']
和['red', 'green']
,我想要得到的结果是:
小绿球、小红球、大绿球、大红球、绿球、红球、小球、大球、绿色小球、>红色大球等
对我来说最大的困难是弄清楚如何制作,这样每个数组就不会出现任何重复,例如:小大球或绿红球。
最佳答案
这是我的解决方案
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))
关于JavaScript,从多个数组中获取所有唯一的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50643977/