Tengo un catálogo de moda, un inventario de artículos. Cada diseñador tiene una línea de artículos. Cada artículo tiene un nombre y un precio.
Tengo que escribir una función que recibirá como parámetro una matriz. La función tiene que acceder a todos los elementos de cada diseñador y devolver una matriz como :
[ [designer name, shoe name, price], [designer name, shoe name, price], ... ]Pero estoy atascado con esto: (( este es mi regreso ))
[ 'Brunello Cucinelli', [ 'tasselled black low-top lace-up', 1000 ], 'Brunello Cucinelli', [ 'tasselled green low-top lace-up', 1100 ], 'Brunello Cucinelli', [ 'plain beige suede moccasin', 950 ], 'Brunello Cucinelli', [ 'plain olive suede moccasin', 1050 ], 'Gucci', [ 'red leather laced sneakers', 800 ], 'Gucci', [ 'black leather laced sneakers', 900 ] ] var currentInventory = [ //array with data { name: 'Brunello Cucinelli', shoes: [ { name: 'tasselled black low-top lace-up', price: 1000 }, { name: 'tasselled green low-top lace-up', price: 1100 }, { name: 'plain beige suede moccasin', price: 950 }, { name: 'plain olive suede moccasin', price: 1050 } ] }, { name: 'Gucci', shoes: [ { name: 'red leather laced sneakers', price: 800 }, { name: 'black leather laced sneakers', price: 900 } ] } ]; function renderInventory(inventory) { let matrix = [] let props = [] for(let i=0; i < inventory.length; i++){ //loop 1 inventory matrix.push(inventory[i].name) for(let n=0; n < inventory[i].shoes.length; n++){ //loop 2 shoes() props.push(matrix[i]) props.push(Object.values(inventory[i].shoes[n])) } //end loop 2 } //end loop 1 return props; } renderInventory(currentInventory)¿Alguna ayuda por favor?
Puede usar una llamada map() anidada y luego aplanar el resultado (aquí usando flatMap() que combina las operaciones). Este ejemplo también utiliza la desestructuración con alias.
const currentInventory = [{ name: 'Brunello Cucinelli', shoes: [{ name: 'tasselled black low-top lace-up', price: 1000 }, { name: 'tasselled green low-top lace-up', price: 1100 }, { name: 'plain beige suede moccasin', price: 950 }, { name: 'plain olive suede moccasin', price: 1050 }] }, { name: 'Gucci', shoes: [{ name: 'red leather laced sneakers', price: 800 }, { name: 'black leather laced sneakers', price: 900 }] }]; const result = currentInventory .flatMap(({ name: designer, shoes }) => shoes.map(({ name: shoe, price }) => [designer, shoe, price]) ) console.log(result)