gpt4 book ai didi

javascript - 为什么代码看起来有效,但结果中还包含未定义的内容?

转载 作者:行者123 更新时间:2023-11-30 09:52:27 25 4
gpt4 key购买 nike

我下面的代码来自 coderbyte.com 挑战。我是初学者,所以欢迎所有建设性的批评。我知道我可以使用它。挑战要求获取一个字符串,并将字符串中的每个字母替换为字母表中紧随其后的字母(即 c 变为 d,z 变为 a)。然后将这个新字符串中的每个元音 (a, e, i, o, u) 大写,最后返回修改后的字符串。下面的代码应该修改我提供的字符串(在本例中为“Hello World!”),但我无法弄清楚为什么它会导致显示正确的代码然后显示“未定义”。任何人都可以阐明这一点吗?

Ifmmp xpsmE!undefined

代码如下:

var str = "Hello World!";
console.log(change_letter(str));

function change_letter(str){
var revised="";
for(i=0;i<=str.length;i++){
var theChar = str[i];
if((theChar>='a' && theChar<'z') ||
(theChar>='A' && theChar<'Z')){
var charCode = str.charCodeAt(i);
var newCharCode = charCode+1;
var newLetter = String.fromCharCode(newCharCode).toLowerCase();
if (newLetter==='a' || newLetter === 'e'
|| newLetter === 'i' || newLetter === 'o'
|| newLetter === 'u'){
newLetter = newLetter.toUpperCase();
}
revised+=newLetter;
}
else if(theChar==='z' || theChar==='Z'){
revised+='a';
}
else revised+=theChar;
}
return revised;
}

最佳答案

您忘记了 str.length属性实际上比长度多 1,因为数组从索引 0 开始。尝试将循环更改为:

for(i=0;i<=str.length-1;i++){

或:

for(i=0;i<str.length;i++){

您看到 undefined 的原因是因为当循环到达最后一次迭代时,i 的值等于字符串的长度,所以当它查找 str[i] 时,它没有找到它,因此附加了 undefined 。

最后一个元素的索引实际上是长度减一,因为索引从零开始。所以在你的 for 循环中,你添加 -1避免这种情况的一部分,或者只使用 <而不是 <= .

关于javascript - 为什么代码看起来有效,但结果中还包含未定义的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35676378/

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