首页 > 解决方案 > 以下排列的哪个“for”循环?

问题描述

我正在尝试使用 for 循环获取这些排列。

等等。

我在jsfiddle中完成了这项工作,一个接一个地放置for循环以捕获系统结构:

var a, b, c;

a = ['a', 'b', 'c', 'd', 'e', 'f'];
b = [];

for(i=0; i < a.length; i++){
  b[b.length] = a[i];
}
for(i=1; i < a.length; i++){
  b[b.length] = b[0]+b[i];
}
for(i=2; i < a.length; i++){
  b[b.length] = b[1]+b[i];
}
for(i=3; i < a.length; i++){
  b[b.length] = b[2]+b[i];
}
for(i=4; i < a.length; i++){
  b[b.length] = b[3]+b[i];
}
for(i=2; i < a.length; i++){
  b[b.length] = b[5]+b[i];
}
for(i=3; i < a.length; i++){
  b[b.length] = b[6]+b[i];
}
for(i=4; i < a.length; i++){
  b[b.length] = b[7]+b[i];
}
for(i=3; i < a.length; i++){
  b[b.length] = b[9]+b[i];
}
for(i=4; i < a.length; i++){
  b[b.length] = b[10]+b[i];
}
for(i=4; i < a.length; i++){
  b[b.length] = b[12]+b[i];
}
for(i=3; i < a.length; i++){
  b[b.length] = b[15]+b[i];
}
for(i=4; i < a.length; i++){
  b[b.length] = b[16]+b[i];
}
for(i=4; i < a.length; i++){
  b[b.length] = b[18]+b[i];
}
for(i=4; i < a.length; i++){
  b[b.length] = b[21]+b[i];
}
for(i=4; i < a.length; i++){
  b[b.length] = b[25]+b[i];
}

标签: javascriptloopsfor-looppermutation

解决方案


试试这个解决方案。

var x = ['a','b','c','d'],
	possiblePermutation = [];

x.forEach(function(elmt){
	possiblePermutation.push(elmt)
	var rest = x.slice( x.indexOf(elmt) + 1);
	myPermutationGeneration(elmt,rest)
})
function myPermutationGeneration(current,rest){	
	rest.forEach( function( restEle ){
		possiblePermutation.push( current + restEle )
		var rest2 = x.slice( x.indexOf(restEle) + 1);
		myPermutationGeneration( current + restEle, rest2)
	})
}
console.log( possiblePermutation )


推荐阅读