为啥 .forEach() 有效但 for 循环无效? [复制]
Posted
技术标签:
【中文标题】为啥 .forEach() 有效但 for 循环无效? [复制]【英文标题】:Why does .forEach() work but not a for loop? [duplicate]为什么 .forEach() 有效但 for 循环无效? [复制] 【发布时间】:2021-11-06 14:11:51 【问题描述】:目前正在学习 Node.JS 并制作一个基本的命令提示符笔记应用程序。在处理 listNotes 函数(用于显示笔记的所有标题)时,我最初是这样开始的:
const notes = loadNotes()
for (let note in notes)
console.log(note.title)
这给我留下了一个未定义的问题。
然而,
const notes = loadNotes()
notes.forEach((note) =>
console.log(note.title)
)
给我留下了实际的笔记标题。
在这种情况下,forEach 和 for 循环有什么区别?
为了澄清,我的 loadNotes() 方法所做的只是读取一个 JSON 文件并将其解析为一个对象。如果文件不存在,则创建一个空数组
注可以定义为:
Note[
title: "string",
body: "string"
]
提前致谢!
【问题讨论】:
你有没有 console.log 注释变量。检查这个变量是数组还是对象for..in
迭代索引。尝试改用for..of
【参考方案1】:
你应该使用“of”而不是“in”
例如:
const notes = loadNotes()
for (let note of notes)
console.log(note.title)
就像 Phil 指出的那样,for..in
将迭代索引。
例如,如果 notes 是一个数组:
const notes = loadNotes()
for (let index in notes)
console.log(index)
// outputs are: 0,1,2, etc...
// You are doing something like: 1.title, 2.title
// 'title' is not a field of these numeric values,
// so you are getting 'undefined' values
【讨论】:
以上是关于为啥 .forEach() 有效但 for 循环无效? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 foreach 比我的 for 循环快? [复制]
当我使用 for 循环时,为啥我的代码没有在 forEach 中等待? [复制]