Javascript 显示给定输入编号的数据集中所有可能的字母组合
我试图实现的是从给定的输入数字中获得字母组合。例如,如果我输入111,输出应该是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>
['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