首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript:凝聚if else语句

JavaScript:凝聚if else语句
EN

Stack Overflow用户
提问于 2018-12-05 02:52:05
回答 2查看 87关注 0票数 2

有没有一种更短、更有效的方法来做到这一点?它看起来有点大,我只想知道它是否能被浓缩?

代码语言:javascript
运行
复制
 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);
}
EN

Stack Overflow用户

回答已采纳

发布于 2018-12-05 02:58:03

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

代码语言:javascript
运行
复制
const word = 'bBac';
const chars = ['a', 'b', 'c', 'd'];

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

为了获得更高的效率,而不是使用.indexOf (即O(N)),使用Map (O(1)):

代码语言:javascript
运行
复制
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;

票数 6
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53624459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档