为什么 .forEach() 有效但不是 for 循环?
Why does .forEach() work but not a for loop?
目前正在学习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 文件并将其解析为 object。如果文件不存在,它会创建一个空数组
注释可以定义为:
Note[{
title: "string",
body: "string"
}]
提前致谢!
你应该使用“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
目前正在学习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 文件并将其解析为 object。如果文件不存在,它会创建一个空数组
注释可以定义为:
Note[{
title: "string",
body: "string"
}]
提前致谢!
你应该使用“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