猿问

javascript 进行组合,C(M,1),m数量是不确定的,应该如何解决?

我看到其他人提到一个问题,还有下边的答案,感觉非常有兴趣,就把题目改编了

题目来源及自己的思路

题目原本是这样的,`var wordList = [

[{'热烈'}, {'万分'}, {'非常'}, ''],
[{'欢迎'}, {'感谢'}, {'谢谢'}],
[{'您'}, {'亲'}, {'老板'}, {'大神'}, ''],
[{'光临'}, {'惠顾'}, {'支持'}],
[{'小店'}, {'本店'}, {'火女菜馆'}]

];`

如何把这个全都组合起来呢,相同行的不能组成一个,比如:热烈 感谢 老板 支持 小店(每行取一个)这是正确的。

但是热烈 万分 谢谢 大神 支持,这样是错误的

每次要提取的数量m,是不一定的,比如m=5,就是热烈 感谢 老板 支持 小店
m=4,就是 热烈 感谢 老板 支持

热烈 感谢 老板 小店
热烈 老板 支持 小店
感谢 老板 支持 小店

这样的,当然还有很多种,都没有一一列出来,这种计算应该如何达成呢?

组成的应该是这样的:[{'热烈'},{'感谢'},{'老板'},{'支持'},{'小店'}]


有只小跳蛙
浏览 320回答 2
2回答

Qyouu

let wordList = [     ['热烈', '万分', '非常'],     ['欢迎', '感谢', '谢谢'],     ['您', '亲', '老板', '大神'],     ['光临', '惠顾', '支持'],     ['小店', '本店', '火女菜馆'] ]; let M = 4; /** @example cross([[1]], [2,3]) // [[1,2], [1,3]] */ let cross = (a1, a2) => a1.reduce((r, s1) => r.concat(a2.map(s2 => [...s1, s2])), []); //还可以这么写 //let cross = (a1, a2) => [].concat(...a1.map(s1 => a2.map(s2 => [...s1, s2]))); let result = wordList.slice(0, M).reduce(cross, [[]]);

莫回无

改成这样该如何做:let wordList=[ {"name":"热烈","id":1},{"name":"万分","id":2},{"name":"非常","id":3}, {"name":"欢迎","id":1},{"name":"感谢","id":2},{"name":"谢谢","id":3}, {"name":"您","id":2},{"name":"亲","id":1},{"name":"大神","id"1} ]id相同的不能组合为一组,共有多少种组合的方式,同样M是不确定的,从这些组种选择M个想组合,该如何代码
随时随地看视频慕课网APP
我要回答