¿Quiero recorrer la matriz y hacer que mi función de retorno de bucle o una cadena de tiempo diga que el nombre existe? este es el error TypeError: No se puede leer la propiedad 'nombre' de undefined var x = arr[i].name;
var arr = [ {id: 1, name: "php"}, {id: 2, name: "mysql"}, {id: 3, name: "laravel"}, {id: 4, name: "codeigniter"}, {id: 5, name: "wordpress"}, {id: 6, name: "sql"}, {id: 7, name: "jquery"}, {id: 8, name: "javascript"}, ]; var string; function checkemail(arr, string) { var i; for (i = 0; i < arr.length; i++) { let newname = arr[i].name; if (newname !== string) { return storename(); } else { console.log("name found") } } } } console.log(checkemail(arr, "javascript"));Debe recorrer toda la matriz antes de tomar una decisión sobre la existencia del elemento en la matriz.
Está llamando a la función storename en la primera discrepancia del nombre y el parámetro. Esto hará que la función verifique el primer elemento y regrese después de llamar a la función storename .
mi implementación
function storename() { return 'storename function'; } var arr = [ { id: 1, name: "php" }, { id: 2, name: "mysql" }, { id: 3, name: "laravel" }, { id: 4, name: "codeigniter" }, { id: 5, name: "wordpress" }, { id: 6, name: "sql" }, { id: 7, name: "jquery" }, { id: 8, name: "javascript" }, ]; var string; function checkemail(arr, string) { var i; let isFound = false; for (i = 0; i < arr.length; i++) { let newname = arr[i].name; if (newname === string) { isFound = true; i = arr.length; // Item found, you can exit the loop now return "name found"; } } if(!isFound) { return storename() } } console.log(checkemail(arr, "javascript")); Implementación Array.find :
Puede implementar la misma lógica sin usar un bucle manual usando Array.find como se muestra a continuación.
var arr = [ { id: 1, name: "php" }, { id: 2, name: "mysql" }, { id: 3, name: "laravel" }, { id: 4, name: "codeigniter" }, { id: 5, name: "wordpress" }, { id: 6, name: "sql" }, { id: 7, name: "jquery" }, { id: 8, name: "javascript" }, ]; var string; function storename() { return 'storename function'; } function checkemail(arr, string) { const node = arr.find(item => item.name === string); return node ? "name found" : storename(); } console.log(checkemail(arr, "javascript"));