2016-09-02 47 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]); 
    } 
} 

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