【问题标题】: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

标签: javascript node.js arrays for-loop foreach


【解决方案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

【讨论】:

    猜你喜欢
    • 2021-08-15
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 2018-10-30
    • 1970-01-01
    • 2016-09-18
    相关资源
    最近更新 更多