javascript - str[index + 1] 在 for 循环中返回未定义

标签 javascript for-loop

为什么会出现这种情况?

let str = 'sSAo'
console.log(str[0], str[3]) // all good

for (let i in str) {
    // why str[i+1] is undefined ???
    console.log(i, str[i], str[i+1])
}

最佳答案

问题是 for..in 循环迭代对象的属性名称。但属性名称始终是字符串,而不是数字。因此,例如,在第一次迭代时:

str[i+1]

评估为

str['0'+1]

这是

str['01']

相反,首先将 i 转换为 Number:

let str = 'abcd'

for (let i in str) {
    console.log(i, str[i], str[Number(i)+1])
}

关于javascript - str[index + 1] 在 for 循环中返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52109879/

相关文章:

javascript - 如何在 Typescript 中更新数组列表的对象?

javascript - 浏览器在不应该缓存的 JavaScript 文件中

r - 从单个数据集中循环R个多个样本

c - 函数中的 For 循环产生随机数

java - 如何在 Java 中将 ArrayList 添加到 Hashmap

javascript - 如何使用 Promise.all() 和异步循环?

javascript - dojo.gauges 中仪表的突然变化。不像 dojox.gauges

r - 通过变量列表为 R 中的 LM 模型创建循环

java - Java for循环中的内存泄漏

javascript - MongoDB查询集合中对象的数组