【发布时间】:2018-06-16 13:01:54
【问题描述】:
我需要创建一个函数alphabetIndexer,它接受一个字符串作为参数并返回一个数字字符串,表示每个字母在字母表中的位置('a' 是1,'z' 是26)。如果字符为大写,则将其位置乘以 2。字符串中所有非字母的字符都应被忽略。
function alphabetIndexer(str){
let alphabet = 'abcdefghigklmnopqrstuvwxyz';
let arr = [];
for(let i = 0; i < str.length; i++){
if(alphabet.includes(str[i].toLowerCase())){
if(str[i] === str[i].toUpperCase()){
arr.push(alphabet.indexOf((str[i] +1)*2))
} else {
arr.push(alphabet.indexOf(str[i]) +1);
}
}
}
return arr.join(' ');
}
我无法将大写字母位置乘以 2;
在测试用例“Hello World”中,它应该返回“16 5 12 12 15 46 15 17 12 4” 但我的函数返回 [ -1, 5, 12, 12, 15, -1, 15, 18, 12, 4 ]
【问题讨论】:
-
附带说明,您可能需要使用字符代码重新考虑这一点:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… --
codePointAt()方法为您提供一个代表给定索引处字符的数字,例如A为 65。它比为每个字符搜索字符串更快。
标签: javascript