javascript - 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);
}
解决方案
一种选择是使用字符数组,然后用于.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)
Map
O(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;
推荐阅读
- jenkins - PodTemplate 如何从私有仓库拉取镜像
- angular - Angular - 在带有 Material Stepper 的反应式表单组件中使用模板驱动的表单组件
- javascript - 如何使 Tailwind CSS 的暗模式与 Next.js 和 styled-jsx 一起使用?
- python - 如何打印在 Tensorflow 训练 model.fit(X, Y) 期间使用的每个 x、y 对?
- reactjs - 安装 Material UI 日期选择器模块后出现“找不到文件”错误
- azure - 计划的 Azure Web 作业超时
- c# - 使用 DataAdapter 执行查询而不返回结果(不使用 Fill 方法)
- apache-spark - pyspark 从 hbase 读取数据
- flutter - Flutter App中多个文档内相同字段的总数
- javascript - React 中 className 和 style-component 的区别