Tengo una lista de datos como la siguiente:
Los datos constan de 6 categorías (bolsos, zapatos, niñas, bolsos y niños) y todos ellos almacenan los mismos datos (id, artículos (array: desc, id, imageUrl, name, price), routeName, title).
Ahora, quiero recorrer todas las categorías y simplemente recuperar su nombre de los 'elementos', ¿cómo puedo hacer esto?
Probé el código a continuación y solo puedo recuperar el nombre de una de las categorías. ¿Hay alguna forma de obtener todos los nombres de todas las colecciones? Gracias por ayudarme.
const { bags, shoes, girls, bags, boys } = collections; const {items} = bags; console.log(items.map(item => item.name));Usé este objeto de datos de muestra que se mapea con su ejemplo. el uso de las funciones de matriz a continuación puede obtener el resultado de manera más eficiente.
const data = { bags: { id: 1, items: [ { desc: "abc", id: 1, imageUrl: "url", name: "Rabbit Crossbody", price:"$10" }, { desc: "qwe", id: 2, imageUrl: "url", name: "Cat Crossbody", price:"$10" }, { desc: "pqr", id: 3, imageUrl: "url", name: "Parrot Crossbody", price:"$10" }, ], routeName:"bags", title:"Bags" }, boys: { id: 1, items: [ { desc: "abc", id: 1, imageUrl: "url", name: "Lion Crossbody", price:"$10" }, { desc: "qwe", id: 2, imageUrl: "url", name: "Dog Crossbody", price:"$10" }, { desc: "pqr", id: 3, imageUrl: "url", name: "Crow Crossbody", price:"$10" }, ], routeName:"boys", title:"Boys" }, girls: { id: 1, items: [ { desc: "abc", id: 1, imageUrl: "url", name: "Pig Crossbody", price:"$10" }, { desc: "qwe", id: 2, imageUrl: "url", name: "Hen Crossbody", price:"$10" }, { desc: "pqr", id: 3, imageUrl: "url", name: "fish Crossbody", price:"$10" }, ], routeName:"girls", title:"Girls" }}; const categories = Object.keys(data); // extract categories const filteredNames = categories.map(category => { const items = data[category].items; // extract items of each category return items.map(item => item.name); // extract names of items into new[] }); console.log('names', filteredNames.flat()); // ["Rabbit Crossbody", "Cat Crossbody", "Parrot Crossbody", "Lion Crossbody", "Dog Crossbody", "Crow Crossbody", "Pig Crossbody", "Hen Crossbody", "fish Crossbody"]Prueba 2 bucles:
const allNames = []; for (const collection of Object.values(collections)) { for(const item of collection.items) { allNames.push(item.name); } } console.log(allNames);También es posible hacer esto con funciones de matriz, pero un bucle suele ser el más obvio.