显示给定输入数字的数据集中所有可能的字母组合

Nai*_*ani 5 javascript arrays object

我想要实现的是从给定的输入数字中获取字母组合.例如.如果我输入111,输出应该是['AAA','KA','AK'].如果输入为1111,则输出应为['AAAA','KAA','AKA','AAK','KK'].部分工作代码如下,我得到['K','K']输入111:

    <html>
<head>
    <h1>Javascript</h1>
</head>
<body>
    <script>
        var dataset =   
        {A:'1',B:'2',C:'3',D:'4',E:'5',F:'6',G:'7',H:'8',I:'9',
       J:'10',K:'11',L:'12',M:'13',N:'14',O:'15',P:'16',Q:'17',R:'18',
        S:'19',T:'20',U:'21',V:'22',W:'23',X:'24',Y:'25',Z:'26'};

        var arr = [];
        var z;  
        var result = [];

        var find = function(input){
            for(var key in dataset) {
                if(dataset[key] === input) {
                    return key;
                }
            }
        }

        var foo = function(x){
            z = x.toString();

            for(var i=0;i<z.length;i++){
                arr.push(z.charAt(i));
            }


            for(var i=0;i<arr.length;i++){
                if(arr[i]+arr[i+1] <= 26){
                    var returnedkey = find(arr[i]+arr[i+1]);
                    result.push(returnedkey);
                }               
            }

        }

        foo(111);
        console.log(arr);
        console.log(result);

    </script>
</body>
Run Code Online (Sandbox Code Playgroud)

我很困惑如何进一步,哪个是正确的方法,提前谢谢!

Nin*_*olz 3

该提案使用对象进行查找并使用递归来迭代字符串。

getCombination('1111')调用的示例c()

如果可能的话,首先迭代单个字符,然后迭代两个字符。

left right  letter result
---- -----  ------ -----
1111         one   
 111  A      one   
  11  AA     one   
   1  AAA    one   
      AAAA   one   AAAA
  11  AA     one   
      AAK    two   AAK
 111  A      one   
   1  AK     two   
      AKA    one   AKA
  11  K      two   
   1  KA     one   
      KAA    one   KAA
  11  K      two   
      KK     two   KK
Run Code Online (Sandbox Code Playgroud)

left right  letter result
---- -----  ------ -----
1111         one   
 111  A      one   
  11  AA     one   
   1  AAA    one   
      AAAA   one   AAAA
  11  AA     one   
      AAK    two   AAK
 111  A      one   
   1  AK     two   
      AKA    one   AKA
  11  K      two   
   1  KA     one   
      KAA    one   KAA
  11  K      two   
      KK     two   KK
Run Code Online (Sandbox Code Playgroud)