gpt4 book ai didi

javascript - 将字符串转换为数字字符串,表示每个字母在字母表中的位置 ('a' 为 1, 'z' 为 26)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:30:04 33 4
gpt4 key购买 nike

我需要创建一个函数 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 ]

最佳答案

您的开端不错,只是括号错了。这:

arr.push(alphabet.indexOf((str[i] +1)*2))

应该是

arr.push((alphabet.indexOf(str[i]) +1)*2)

如果:

  • 你输入str[i]在变量中而不是每次都查找它
  • 运算符周围使用的空间

:-)

即:

arr.push((alphabet.indexOf(ch) + 1) * 2)

第二个问题是你只做 toLowerCaseincludes 时的事情检查但不要稍后再做 indexOf .你需要在你浏览的所有三个地方都这样做 alphabet :

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].toLowerCase()) + 1) * 2); // ***
} else {
arr.push(alphabet.indexOf(str[i].toLowerCase()) + 1); // ***
}
}
}
return arr.join(' ');
}
console.log(alphabetIndexer("Hi there"));

就其值(value)而言,以下是我要进行的一些小改动(不改变您的总体方法):

"use strict";
function alphabetIndexer(str) {
let alphabet = 'abcdefghigklmnopqrstuvwxyz';
let arr = [];
for (let ch of str) { // Strings are iterable
// Only search `alphabet` once
let index = alphabet.indexOf(ch.toLowerCase());
if (index !== -1) {
if (ch === ch.toUpperCase()) {
arr.push((index + 1) * 2);
} else {
arr.push(index + 1);
}
}
}
return arr.join(' ');
}
console.log(alphabetIndexer("Hi there"));

您也可以考虑使用 const对于“变量”,您永远不会更改(有趣的是,这就是该代码中的所有变量;更改 arr状态并不会更改变量 arr 的内容)。

关于javascript - 将字符串转换为数字字符串,表示每个字母在字母表中的位置 ('a' 为 1, 'z' 为 26),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50888155/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com