Estoy tratando de hacer un sitio web simple (sin CSS3) para buscar elementos en una matriz. Mi forma de lograr este objetivo es buscar en las propiedades 'título' o 'desc' de un elemento en la matriz. Mi resultado esperado es obtener titleOfItem + 'fizz' en la consola si el título incluye la palabra clave de la entrada. En su lugar, me sale el siguiente error: 
Aquí está mi código HTML5:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>replit</title> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <body> <input id="keywordText" type="text"> <button id="submit" onclick="search()">Search</button> <script src="script.js"></script> </body> </html>y Aquí está mi código JS:
const items = { john:{title:'john', desc:"doe", elem:document.getElementById('john')}, jane:{title:'jane', desc:"doe", elem:document.getElementById('jane')} } let allItems = [] for (var key in items) { allItems.push(items[key]) } function search() { let keyword = document.getElementById('keywordText').value; for (let count = 0; allItems.length; count++) { let titleOfItem = allItems[count].title if (titleOfItem.includes(keyword)) { console.log(titleOfItem + ' fizz') } else { console.log(titleOfItem + ' buzz') } } }¿Hay algo que estoy haciendo mal en este código? Además, para fines de organización, ¿hay alguna forma de obtener esta información directamente desde la primera matriz?
for (let count = 0; count < allItems.length; count++) { }Está recibiendo el error porque no especificó cuánto tiempo continuará el valor de conteo en el bucle for. Puede solucionar el problema actualizando el código de esta manera.
Probablemente te perdiste la condición en el bucle for. Cambia tu código a este:
for (let count = 0; count < allItems.length; count++)
La razón es porque el título no está definido. Eso podría deberse a que el título no se copió correctamente en su código o porque atravesó la matriz a fuera de los límites donde el título no es accesible y no está definido.
Arregla esta parte:
for (let count = 0; count < allItems.length; count++) { let titleOfItem = allItems[count].title if (titleOfItem.includes(keyword)) { console.log(titleOfItem + ' fizz') } else { console.log(titleOfItem + ' buzz') } }Eso debería hacerlo, pero si no, verifique el valor de allItems para ver si tiene propiedades todo el tiempo