Я хочу дать числа буквам алфавита. Проблема в том, что я не знаю, как обрабатывать более одной буквы в одном значении; например, буква "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");
Вы можете взять строку, разделить ее на массив символов и использовать parseInt
с радиусом 36
, где вы получите значение для буквы. Позже присоедините результат к одной строке.
var string = 'aed',
result = string
.split('')
.map(c => parseInt(c, 36) - 9)
.join('');
console.log(result);
Даже более короткая версия с Array.from
var string = 'aed',
result = Array.from(string, c => parseInt(c, 36) - 9).join('');
console.log(result);
Во-первых, нет никакой реальной причины, чтобы этот 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
ES6
Более краткий: делает строку итерируемой (оператор спредов), а затем отображает альфа-свойства, соединяется и возвращает отображаемые в конце.
function bin(letters) {
return [...letters].map(letter => alpha[letter]).join('');
}
bin("AED"); // 154
Вот пример кода 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'));