创建没有硬编码的数组

时间:2017-08-28 02:02:20

标签: javascript arrays

我正在尝试创建一个字符串数组,并通过数组字符串的长度产生可能性。例如:

 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)个长度?

3 个答案:

答案 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);
  }
}

https://jsfiddle.net/fmy539tj/

相关问题