Actualmente estoy aprendiendo Node.JS y creando una aplicación básica de notas de símbolo del sistema. Mientras trabajaba en la función listNotes (destinada a mostrar todos los títulos de las notas), inicialmente comencé con esto:
const notes = loadNotes() for (let note in notes) { console.log(note.title) }Esto me dejó con un indefinido.
Sin embargo,
const notes = loadNotes() notes.forEach((note) => { console.log(note.title) })me dejó con el título real de la nota.
¿Cuál es la diferencia entre forEach y un bucle for en este caso?
Para aclarar, todo lo que hace mi método loadNotes() es leer un archivo JSON y analizarlo en un objeto. Si el archivo no existe, crea una matriz vacía
La nota se puede definir como:
Note[{ title: "string", body: "string" }]¡Gracias por adelantado!
Debes usar "of" en lugar de "in"
ex:
const notes = loadNotes() for (let note of notes) { console.log(note.title) } Como señaló Phil, for..in los índices.
Por ejemplo, si las notas son una matriz:
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