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

Javascript 显示给定输入编号的数据集中所有可能的字母组合,javascript,arrays,object,Javascript,Arrays,Object,我试图实现的是从给定的输入数字中获得字母组合。例如,如果我输入111,输出应该是['AAA','KA','AK']。如果输入是1111,则输出应该是['AAAA'、'KAA'、'AKA'、'AAK'、'KK']。 部分工作代码如下所示,其中我得到输入111的['K','K']: <html> <head> <h1>Javascript</h1> </head> <body> <script>

我试图实现的是从给定的输入数字中获得字母组合。例如,如果我输入111,输出应该是
['AAA','KA','AK']
。如果输入是1111,则输出应该是
['AAAA'、'KAA'、'AKA'、'AAK'、'KK']
。 部分工作代码如下所示,其中我得到输入111的
['K','K']

    <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>

Javascript
变量数据集=
{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结果=[];
var find=函数(输入){
for(数据集中的var键){
if(数据集[键]==输入){
返回键;
}
}
}
var foo=函数(x){
z=x.toString();

对于(var i=0;i,此方案使用一个对象进行查找,并使用一个递归对字符串进行迭代

调用
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
函数getcomposition(s){
功能c(左、右){
如果(!左){
结果:推(右);
返回;
}
//检查left的第一个字符是否在字母对象中
//然后调用c,但不使用左边的第一个字母
//右键是第一个字符的字母对象中的字母
字母[left[0]]和&c(左。子字符串(1),右+字母[left[0]]);
//与上面基本相同,但有两个字符
左.长度>1&&字母[左.子字符串(0,2)]&&c(左.子字符串(2),右+字母[左.子字符串(0,2)];
}
变量字母={1:A',2:B',3:C',4:D',5:E',6:F',7:G',8:H',9:I',10:J',11:K',12:L',13:M',14:N',15:O',16:P',17:q',18:R',19:S',20:T',21:U',22:V',23:W',24:X',25:Y',26:Z'},
结果=[];
c(s),;
返回结果;
}
document.write(''+JSON.stringify(getcomposition('1111'),0,4)+'';

document.write(“”+JSON.stringify(getcomposition('1011121314'),0,4)+“;
字母[left[0]]和&c(left.substring(1),right+字母[left[0]]相关)
do?我的意思是我不知道它到底能做什么。你能解释一下吗?我尝试了这个解决方案,它能像预期的那样工作,但我真的不明白这些行的作用是什么字母[left[0]]&&c(left.substring(1),right+字母[left[0]];left.length>1&&letters[left.substring(0,2)]&&c(left.substring(2),right+字母[left.substring(0,2)];此
字母[left[0]]
检查第一个字母是否在对象中,如果是,则调用
c
,并在左侧和右侧添加一个字母。非常好的解释,明白了!谢谢@NinaScholz