我正在尝试创建一个字符串数组,并通过数组字符串的长度产生可能性。例如:
var someStr = ["a","b","c","d"];
//I want to produce this outcome
a
ab
abc
abcd
b
bc
bcd
c
cd
d
我知道我可以通过这种方式获得“a”的可能性:
var numCombinations = 0;
var comboString = '';
var outcome = [];
for(var i = 0; i < someStr.length; i++){
comboString += someStr[i];
outcome[i] = comboString;
numCombinations += i; //# of combinations from above
}
但是我如何继续使用这些变量来留下可能性呢?我曾想过一次又一次地创建嵌套的for循环,但最终会导致硬编码的(n)长度。是否有任何方法可以创建它并将所有可能性存储到第(n)个长度?
答案 0 :(得分:3)
希望得到这个帮助。
function getComboStringListFromIdx(arr, idx){
var result = [];
var comboString = '';
for(var i=idx; i<arr.length; i++){
comboString += arr[i];
result.push(comboString);
}
return result;
}
var someStr = ['a','b','c','d'];
var outCome = [];
for(var i = 0; i<someStr.length; i++){
outCome = outCome.concat(getComboStringListFromIdx(someStr, i));
}
答案 1 :(得分:1)
我也会使用嵌套的for循环!一个是normal looping
,另一个是从第一个循环跳过less than
当前索引!!
var someStr = ["a","b","c","d"];
for(var i = 0;i < someStr.length;i++) {
output(i);
}
function output(index) {
var str = "";
for(var j in someStr) {
if(j < index) {
continue;
}
str += someStr[j];
console.log(str);
}
}
答案 2 :(得分:1)
此解决方案使用嵌套for循环并在嵌套for循环的第一个元素上跳过连接。
var arr = ["a","b","c","d"];
for(var i=0;i<arr.length;i++){
var str = arr[i];
for(var j=i;j<arr.length;j++){
if(i!==j)
str+=arr[j];
console.log(str);
}
}