Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 6人穿着6件衬衫的所有组合_Javascript_Arrays_Combinations - Fatal编程技术网

Javascript 6人穿着6件衬衫的所有组合

Javascript 6人穿着6件衬衫的所有组合,javascript,arrays,combinations,Javascript,Arrays,Combinations,我在思考如何编写代码时遇到了困难,我在谷歌上搜索了一下,但没有找到任何能完成这项特定任务的东西。我有一些想法,但似乎都不实用,我担心我会错过一些组合 假设你有一个6人的阵列 var people = ['bob', 'joe', 'jeff', 'sandy', 'jessica', 'april']; 还有6件衬衫 var shirts = ['red', 'blue', 'green', 'yellow', 'purple', 'white']; 我们如何生成这6位穿着这6件衬衫的人的所

我在思考如何编写代码时遇到了困难,我在谷歌上搜索了一下,但没有找到任何能完成这项特定任务的东西。我有一些想法,但似乎都不实用,我担心我会错过一些组合

假设你有一个6人的阵列

var people = ['bob', 'joe', 'jeff', 'sandy', 'jessica', 'april'];
还有6件衬衫

var shirts = ['red', 'blue', 'green', 'yellow', 'purple', 'white'];
我们如何生成这6位穿着这6件衬衫的人的所有可能组合的列表?比如:

[ ['bob', 'red'], ['joe', 'blue'], ['jeff', 'green'], ['sandy','yellow'], ['jessica', 'purple'], ['april', 'white'] ]
[ ['bob', 'blue'], ['joe', 'red'], ['jeff', 'green'], ['sandy','yellow'], ['jessica', 'purple'], ['april', 'white'] ]
...
..
.
任何帮助或链接将不胜感激

衬衫。每件置换衬衫的索引直接映射到穿着它的人。例如:

for (let permutation of permute(shirts)) {
  let combination = permutation.map((shirt, index) => [people[index], shirt]);
  ...
}

当@leum在写他的答案时,我正在用JSFiddle测试一个解决方案。事实上,我想我使用的是他/她的函数,因为它是页面中最快的排列函数。所以我想我会把它留在这里,以防有用

函数置换(置换){
var length=置换.length,
结果=新数组([0,1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600][长度],
c=新数组(长度)。填充(0),
i=1,
j=1;
结果[0]=置换.slice();
while(iperm.map((elem,ix)=>people[ix],elem]);
控制台.日志(组合.长度);

控制台日志(组合),其中每个排列的索引直接映射到人,例如0->
鲍勃
,1->
,等等。只需将2用于循环,一个在另一个内部…是126个组合吗?@NenadVracar我假设为6!=720因为所有的排列都是OP描述的有效组合。OP应该澄清这一点。谢谢勒姆,谢谢你留下来,尽管我因为某种原因被否决为遗忘。也许我没有问好,不管怎样,这是我想到的,谢谢你的评论,欢迎你!这个问题说得很好,但答案对于经验丰富、有时会引发快乐的退伍军人来说可能太明显了。只是猜测而已…谢谢你的回答!