JavaScript,从多个数组中获取所有唯一的组合

标签 javascript generator combinations

我正在寻找一种从多个数组生成所有可能组合的方法。当涉及到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/

相关文章:

php - Tablesorter 重新加载 tbody 或仅在数据库更改/更新时重新加载该行

python - 生成器与列表理解

r - 查找 6 个数字加起来等于 10 的所有组合的列表

python - 使用 Python 查找元组中的所有常见元素和组合

javascript - 三、TrackballControls 旋转中心

javascript - 如何允许以类似于 JSFiddle 的方式进行共享?

javascript - 我应该在前端还是后端处理 JSON,哪个更快?

Java:通过给出数字 N 来生成 true 和 false 的组合;

algorithm - 使用次线性内存生成排列

安排人们参加应成对进行的事件的算法