Estoy tratando de probar algo en javascript con una matriz y el objeto aquí es lo que estoy tratando de hacer:
const data = [ { name: "Order A", orderItems: [ { qty: [2, 2, 2], products: [ { name: "Product A" }, { name: "Product B" }, { name: "Product C" }, ], }, ], }, ]; const dataName = data.map(({ name }) => { return name; }); const product = data.map(({ orderItems }) => { return orderItems.map(({ qty, products }) => { return products.map(({ name }) => { return name + qty; }); }); }); console.log(`This is ${dataName} with ${product}`); Quiero que devuelva algo como A2 , B2 y C2 pero devuelve algo como A2,2,2 B2,2,2 C2,2,2 Sé que hice algo mal. Si necesita más aclaraciones, hágamelo saber.
Estás concatenando toda la matriz qty . Pase el índice de matriz de products y concatene la qty correspondiente en su lugar.
const product = data.map(({ orderItems }) => { return orderItems.map(({ qty, products }) => { return products.map(({ name }, i) => { return name + qty[i]; }); }); }); console.log(`This is ${dataName} with ${product}`);Producción
This is Order A with Product A2,Product B2,Product C2¿Prueba esto? No olvide que tiene un índice como el segundo parámetro de los métodos de matriz, y creo que solo necesita usarlo para resolver su problema :)
const ret = data.flatMap(({orderItems}) => orderItems).flatMap(({qty, products}) => { return qty.flatMap((quantity, index) => ({quantity, name: products[index].name})) }); ret.forEach(({name, quantity})=>console.log(name, quantity))