我想给字母表中的数字。问题是我不知道如何处理相同值的多个字母;例如字母“A”:1“E”:5和“D”:4应返回154但在我的代码中返回仅给出最后一个字母的编号。
var alpha =[
{
"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,
}
];
function bin(letter){
for (var i = 0; i < alpha.length; i++){
if(alpha[i].hasOwnProperty(letter)){
return alpha[i][letter];
}
}
}
bin("R");bin("E");
答案 0 :(得分:4)
您可以获取字符串,将其拆分为一个字符数组,并使用基数为36
的{{3}},您可以在其中获得该字母的值。稍后将结果加入一个字符串。
var string = 'aed',
result = string
.split('')
.map(c => parseInt(c, 36) - 9)
.join('');
console.log(result);
的更短版本
var string = 'aed',
result = Array.from(string, c => parseInt(c, 36) - 9).join('');
console.log(result);
答案 1 :(得分:1)
首先,alpha
对象没有真正的理由存在于数组中:
var alpha = {
"A":1,
"B":2,
"C":3,
"D":4,
"E":5
...
}
<强> ES5 强>
创建一个空输出变量。然后迭代字母,将每个映射到alpha
值的字母添加到输出变量。然后只返回输出变量。
function bin(letters) {
var out = '';
for (var i = 0; i < letters.length; i++){
out += alpha[letters[i]]
}
return out;
}
bin("AED"); // 154
<强> DEMO 强>
<强> ES6 强>
更简洁:使字符串可迭代(扩展运算符),然后映射到alpha属性,连接并返回最后映射。
function bin(letters) {
return [...letters].map(letter => alpha[letter]).join('');
}
bin("AED"); // 154
<强> DEMO 强>
答案 2 :(得分:-1)
以下是JavaScript和ES6代码示例
function bin(str){
var result = '';
for(i=0;i < str.length; i++)
result += parseInt(str[i], 36) -9;
return result;
}
function binES(str){
return [...str].map(letter => parseInt(letter, 36) - 9).join('');
}
console.log(bin('AED'));
console.log(binES('AED'));