gpt4 book ai didi

javascript - 为什么我可以执行 array[3].toUpperCase(),但是当 n=3 (或任何数字)时 array[n].toUpperCase() 会出错

转载 作者:行者123 更新时间:2023-12-02 22:54:50 25 4
gpt4 key购买 nike

我正在尝试以这种特定的方式解决编码挑战。

目标是将字符串的每个第二个字母大写。

当我使用 letterArray[0] 或任何其他数字运行代码时,代码运行完美。但当我将其切换到 letterArray[n] 时,代码崩溃了。我收到的错误消息显示:

Cannot read property 'toUpperCase' of undefined.

为什么 letterArray[n].toUpperCase() 未定义,而 letterArray[n].toUpperCase() 未定义?理解基本原理是我真正关心的问题。

let theString = "abcdefghijklm" // good
let theStringLength = theString.length // good
let letterArray = theString.split(""); // good
let newArray = []; // good
let i = 0; // good
let n = 1
for (let index = 0; index < theStringLength; index += 2) {
let lowCaseLetter = letterArray[i]
newArray += lowCaseLetter
i += 2
let upCaseLetter = letterArray[n].toUpperCase();
//if i change this to letterArray[0] the code works perfectly
newArray += upCaseLetter
n += 2
}
console.log(newArray)

最佳答案

您的输入字符串有 13 个字符。您的循环从 0 开始,递增 2 直到达到限制,因此它以值 0、2、4、6、8、10 和 12 运行。您的 n 也递增 2,但开始来自 1,因此 n 的值为 1、3、5、7、9、11 和 13。索引 13 超出了数组的末尾,因此您可以读取一个未定义值,并尝试对其调用toUpperCase

您需要修复您的代码,这样您就不会有效地要求偶数长度的输入;正如所写,您的代码假设它始终可以为每个偶数读取一个奇数索引,而奇数长度输入永远不会出现这种情况。

一种解决方案是避免尝试在每个循环中处理偶数和奇数,而是确定是否要大写,例如:

for (let index = 0; index < theStringLength; ++index) {  // Only increment by 1
let val = letterArray[index]; // Read out value
if (index % 2 === 1) val = val.toUpperCase(); // Convert to upper case for odd indices
newArray += val; // Append to result
}

关于javascript - 为什么我可以执行 array[3].toUpperCase(),但是当 n=3 (或任何数字)时 array[n].toUpperCase() 会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58036471/

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