首页 > 解决方案 > JavaScript:压缩 if else 语句

问题描述

有没有更短更有效的方法来做到这一点?好像有点大,我就是想知道能不能浓缩?

 var y = []

  for(let i=0;i < word.length;++i){
    if(word[i] == "A"|| word[i] == "a"){
      y.push(0)
    }
    else if(word[i] == "B"|| word[i] == "b"){
      y.push(1);
    }
    else if(word[i] == "C"|| word[i] == "c"){
      y.push(2);
    }
    else if(word[i] == "D"|| word[i] == "d"){
      y.push(3);
    }
and so on..


  return(y);
}

标签: javascriptif-statement

解决方案


一种选择是使用字符数组,然后用于.indexOf查找字符的索引:

const word = 'bBac';
const chars = ['a', 'b', 'c', 'd'];

const y = [...word].map(char => chars.indexOf(char.toLowerCase()))
console.log(y);
// return y;

为了稍微提高效率,使用( )代替.indexOf(which is ):O(N)MapO(1)

const word = 'bBac';
const charMap = new Map([
  ['a', 0],
  ['b', 1],
  ['c', 2],
  ['d', 3]
]);

const y = [...word].map(char => charMap.get(char.toLowerCase()))
console.log(y);
// return y;


推荐阅读