2016-09-02 49 views
0

我需要從在javascript得到一個字符串在javascript

var string = 'abcdefghijklmnopqrstuvwxyz'; 

預計輸出

aa 
ab 
ac 
... 

字符串得到的2組合2的組合,我發現這一點,但我無法弄清楚如何以僅過濾2長度組合,並避免其他「額外」計算:

var string = 'abcdefghijklmnopqrstuvwxyz'; 

var tree = function(leafs){ 
    var branches = [];  
    if(leafs.length == 1) return leafs;  
    for(var k in leafs){ 
     var leaf = leafs[k]; 
     tree(leafs.join('').replace(leaf,'').split('')).concat("").map(function(subtree){ 
      branches.push([leaf].concat(subtree)); 
     }); 
    } 
    return branches; 
}; 
console.log(tree(string.split('')).map(function(str){return str.join('')})) 
+1

爲什麼downvotes? – neoDev

+2

我還沒有投票失敗,但我想這是因爲你沒有顯示你的嘗試 – Almasyx

+1

我只是準備好它我試圖快速做,對不起 – neoDev

回答

1

試試這個:

var string = 'abcdefghijklmnopqrstuvwxyz' 
var combinations = [] 

for (var i = 0; i < string.length; i++) { 
    for (var j = i; j < string.length; j++) { 
     combinations.push(string[i] + string[j]) 
    } 
} 

這將產生aa, ab... bb, bc... zz。如果你想aa, ab... ba, bb... zz,只是改變了第二個for循環for (var j = 0...

+0

非常感謝!你讓我今天一整天都感覺很好 – neoDev

1

爲了在相同的字符串,使2的組合,你可以迭代它如下

var string = "abcdefghijklmnoprstuvwxyz"; 
for (var i = 0; i < string.length; ++i) 
{ 
    for (var j = 0; j < string.length; ++j) 
    { 
     console.log(string[i]+string[j]); 
    } 
} 

我已打印的結果了,但你可以很容易地存儲它