Tengo que organizar una lista de pedidos, luego de tener los datos listos, esta lista de objetos debe insertarse en otro objeto.
Creé un código simplificado para una mejor comprensión:
const orderList = []; orderList.push({ order1: { desc: "smt1" } }) orderList.push({ order2: { desc: "smt2" } }) const result = { anotherVar1: 1, anotherVar2: 2, ...orderList } console.log("result", result) { '0': { order1: { desc: 'smt1' } }, '1': { order2: { desc: 'smt2' } }, anotherVar1: 1, anotherVar2: 2, } { order1: { desc: 'smt1' }, order2: { desc: 'smt2' }, anotherVar1: 1, anotherVar2: 2, }¿Cómo lograr el resultado deseado?
Desea que orderList sea un objeto, no una matriz. Luego, en lugar de usar push , desea establecer la clave/valor en el objeto.
const orderList = {}; orderList.order1 = { desc: "smt1" }; orderList.order2 = { desc: "smt2" }; const result = { anotherVar1: 1, anotherVar2: 2, ...orderList } console.log('result', result);Como @Rocket Hazmat menciona en su respuesta , use un objeto en lugar de una matriz
Para responder a la pregunta original, deberá convertir la matriz de objetos en un objeto antes de poder 'fusionarlos'
const orderList = []; orderList.push({ order1: { desc: "smt1" } }); orderList.push({ order2: { desc: "smt2" } }); const result = { anotherVar1: 1, anotherVar2: 2, ...Object.assign({}, ...orderList) }; console.log('result', result);Cómo convertir una matriz de objetos en objetos con pares de valores clave
Como mejor método, mantenga esa matriz como un objeto para que pueda evitar la duplicación y el bucle adicional
Y como en su mismo método, puede seguir este código para hacer el resultado deseado
const orderList = []; orderList.push({ order1: { desc: "smt1" } }) orderList.push({ order2: { desc: "smt2" } }) const result = { anotherVar1: 1, anotherVar2: 2, } orderList.map(d => { for(key in d) { result[key] = d[key] } }) console.log("result", result)