El código funciona con una función foreach simple, pero no con un método de búsqueda. Aquí está el código forEach:
getItemById: function (id) { let found = null; data.items.forEach(item => { if (item.id === id) { found = item; } }); return found; }Aquí está el código con un método de búsqueda:
getItemById: function (id) { let item = data.items.find(item => { item.id === id; }); return item; }¿Por qué no funciona el código con el método find?
también aquí está la matriz de los objetos:
const data = { items: [ { id: 0, name: 'Steak Dinner', calories: 1200 }, { id: 1, name: 'Sausage', calories: 1100 }, { id: 2, name: 'Eggs', calories: 200 }, ], currentItem: null, totalCalories: 0, }La búsqueda espera una función de predicado como devolución de llamada y devuelve el valor que satisface la condición. Si no regresa, undefined regresará de forma predeterminada y undefined se considera un valor falsy .
No está devolviendo nada de la función de find . find no considerará una coincidencia si la función de predicado no devuelve true . No hay una sola coincidencia que devuelva true en cualquier caso porque todos los valores devueltos por find no están undefined
return item.id === id. const data = { items: [ { id: 0, name: "Steak Dinner", calories: 1200 }, { id: 1, name: "Sausage", calories: 1100 }, { id: 2, name: "Eggs", calories: 200 }, ], currentItem: null, totalCalories: 0, }; const obj = { getItemById: function (id) { let item = data.items.find((item) => { return item.id === id; }); return item; }, }; console.log(obj.getItemById(0)); getItemById: function (id) { return data.items.find(item => item.id === id); }No tienes que usar "{" y ";" en el método data.items.find(). Porque, el hallazgo es una función de predicado
No está devolviendo el booleano dentro de la devolución de llamada de find
let item = data.items.find(item => { return item.id === id; });