Si tuviera que crear una función, si se ingresara el nombre de una persona, ¿cómo devolvería una matriz con los nombres de las mascotas del objeto a continuación? ¿Cuál sería el mejor método si tuviera que usar un ciclo for para iterar sobre él? ? Todavía no he aprendido del todo algunas de las características de ES6 y soy nuevo en la codificación.
A continuación se muestra una matriz típica de propietarios:
[ { nombre: 'Malcolm', mascotas: ['Bear', 'Minu'], }, { nombre: 'Caroline', mascotas: ['Basil', 'Hamish'], }, ];
¡Gracias por las respuestas rápidas! :)
Es bastante simple lograrlo: buscas el propietario correspondiente con la función de búsqueda, luego, si tienes un propietario, devuelves la clave de las mascotas, que ya es una matriz según el código proporcionado. Si no tiene un propietario correspondiente al nombre ingresado, obtendrá "indefinido", pero puede personalizar este código para tener una matriz vacía si se ajusta mejor a sus necesidades.
const data = [{ name: 'Malcolm', pets: ['Bear', 'Minu'], }, { name: 'Caroline', pets: ['Basil', 'Hamish'], }, ]; const getPetsByOwnerName = (ownerName) => { const owner = data.find(d => d.name === ownerName); return owner ? owner.pets : undefined; } const carolinePets = getPetsByOwnerName('Caroline'); console.log(carolinePets);EDITAR: solicitud del autor para hacerlo con un bucle
const data = [{ name: 'Malcolm', pets: ['Bear', 'Minu'], }, { name: 'Caroline', pets: ['Basil', 'Hamish'], }, ]; function getPetsByOwnerNameWithLoop(ownerName) { for (let i = 0; i < data.length; i++) { if (data[i].name === ownerName) { return data[i].pets; } } return undefined; } const carolinePets = getPetsByOwnerNameWithLoop('Caroline'); console.log(carolinePets);Prueba el método filter(). Como resultado, la función devuelve una matriz de nombres del propietario filtrado.
Código de ejemplo:
const arr = [ { name: 'Malcolm', pets: ['Bear', 'Minu'], }, { name: 'Caroline', pets: ['Basil', 'Hamish'], } ]; function petsNames(val) { return arr.filter(x => x.name === val)[0].pets; }; console.log(petsNames('Malcolm'));let ownersArray = [ { name: 'Malcolm', pets: ['Bear', 'Minu'], }, { name: 'Caroline', pets: ['Basil', 'Hamish'], }, ]; const petArray = (owner, ownersArray) => { let array = ownersArray.filter((arr) => arr.name===owner) return array.length>0 ? array[0].pets : 'owner not found' } console.log(petArray("Caroline", ownersArray))