有没有一种更短、更有效的方法来做到这一点?它看起来有点大,我只想知道它是否能被浓缩?
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);
}发布于 2018-12-05 02:58:03
一个选项是使用一个字符数组,然后使用.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 (即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;
https://stackoverflow.com/questions/53624459
复制相似问题