处理多个字符的输入

时间:2017-12-01 18:52:25

标签: javascript

我想给字母表中的数字。问题是我不知道如何处理相同值的多个字母;例如字母“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");

3 个答案:

答案 0 :(得分:4)

您可以获取字符串,将其拆分为一个字符数组,并使用基数为36的{​​{3}},您可以在其中获得该字母的值。稍后将结果加入一个字符串。

var string = 'aed',
    result = string
        .split('')
        .map(c => parseInt(c, 36) - 9)
        .join('');
        
console.log(result);

parseInt

的更短版本

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'));

https://jsfiddle.net/of6grgvu/2/