Tengo un objeto y una matriz. El objeto se ve así.
const saleProducts = { category: "Books", product_skus: [ "14003696", "14003915", "14003699", "14003698", "14003697", "14003917", ], };La matriz tiene varios objetos dentro y se parece a esto:
const productDetails = [ { _id: "618182229285e8d8f86be2d9b3", name: "JS for Dummies", description: "Learning Manual", category: "books", sku: "14003696", price: { amount: 20 }, images: [ "https://uri1.png", "https://uri2.png", ], }Como puede ver, el 'sku' en la matriz (bookDetails) coincide con uno de los skus en 'saleProducts'. Entonces me gustaría reemplazar el sku con el objeto que tiene todos los detalles. Al final, me gustaría que los 'productos de venta' se vieran así:
const saleProducts = { category: "Books", product_skus: [ { _id: "618182229285e8d8f86be2d9b3", name: "JS for Dummies", description: "Learning Manual", category: "books", sku: "14003696", price: { amount: 20 }, images: [ "https://uri1.png", "https://uri2.png", ], ] } // ... etc. replacing each sku with the full details.¿Cuál es la forma más sencilla de hacer esto?
Puede usar una función de mapa para reemplazar todos los sku con los datos de detalles correspondientes:
saleProducts.product_skus = saleProducts.product_skus.map(sku => productDetails.find(details => details.sku === sku) || sku ); const saleProducts = { category: "Books", product_skus: [ "14003696", "14003915", "14003699", "14003698", "14003697", "14003917", ], }; const productDetails = [ { _id: "618182229285e8d8f86be2d9b3", name: "JS for Dummies", description: "Learning Manual", category: "books", sku: "14003696", price: { amount: 20 }, images: [ "https://uri1.png", "https://uri2.png", ], }, { _id: "MOCK_1", name: "CSS for Dummies", description: "Learning Manual", category: "books", sku: "14003697", price: { amount: 10 }, images: [ "https://uri3.png", "https://uri4.png", ], } ]; // replace sku with corresponding details data saleProducts.product_skus = saleProducts.product_skus.map(sku => productDetails.find(details => details.sku === sku) || sku); console.log(saleProducts);