tengo el siguiente objeto
{ lookUp: { id: "123", text: { street_address_test: [ { pos: 12, len: 6, }, { pos: 3, len: 8, }, { pos: 3, len: 15, }, ], }, }, }Quiero agregar lo siguiente (usando JavaScript, es decir, nodejs para ser específico)
street_address_uk: [ { pos: 12, len: 6, }, { pos: 3, len: 8, }, { pos: 3, len: 15, }, ],para que se convierta
{ lookUp: { id: "123", text: { street_address_test: [ { pos: 12, len: 6, }, { pos: 3, len: 8, }, { pos: 3, len: 15, }, ], street_address_uk: [ { pos: 12, len: 6, }, { pos: 3, len: 8, }, { pos: 3, len: 15, }, ], }, }, }Miré las publicaciones existentes de Stack Overflow y https://stackoverflow.com/a/8889386/4068218 estaba cerca, pero dinámicamente no sabré street_address_test o street_address_uk .
También revisé otras publicaciones de Stack Overflow, pero la mayoría de las soluciones estaban en matrices, pero como puede ver, la mía no es una matriz.
Cualquier pista es muy apreciada.
Teniendo en cuenta que el objeto de matriz recibido debe asignarse siempre al text de lookUp del objeto de búsqueda, puede hacer lo siguiente,
let objectToAssign = { street_address_test: [{ pos: 12, len: 6, }, { pos: 3, len: 8, }, { pos: 3, len: 15, }, ], street_address_uk: [{ pos: 12, len: 6, }, { pos: 3, len: 8, }, { pos: 3, len: 15, }, ] }; let objectToAssignTo = { lookUp: { id: "123", text: {}, }, } function assignPropToObject(object, globalObject) { let prop = Object.keys(object); for (let i = 0; i < prop.length; i++) { globalObject['lookUp']['text'][prop[i]] = object[prop[i]]; } console.log(globalObject) } assignPropToObject(objectToAssign, objectToAssignTo)Puede usar el operador de dispersión de objetos , object1{...object2} y sobrescribir las propiedades anidadas de esta manera.
En el siguiente ejemplo, asumí que acumulará las matrices street_address individuales en un objeto lookUpData .
let initObject = { lookUp: { id: "123", text: {}, }, }; let lookUpData = { street_address_test: [{ pos: 12, len: 6, }, { pos: 3, len: 8, }, { pos: 3, len: 15, }, ], street_address_uk: [{ pos: 12, len: 6, }, { pos: 3, len: 8, }, { pos: 3, len: 15, }, ], }; let newObject = { ...initObject, lookUp: { ...initObject.lookUp, text: lookUpData, }, }; console.log(initObject); console.log(newObject);gracias @thisdotutkarsh y @Alex. Tus respuestas me ayudaron. Creo que debería haber sido más específico, pero logré obtener lo que quería. Pegué la solución a continuación en caso de que alguien esté buscando algo similar
let master = { lookUp: { id: "123", text: { street_address_uk: [ { pos: 12, len: 6, }, { pos: 3, len: 8, }, { pos: 3, len: 15, }, ], }, }, } let child = { lookUp: { id: "123", text: { street_address_US: [ { pos: 12, len: 6, }, { pos: 3, len: 8, }, { pos: 3, len: 15, }, ], }, }, } const prop = Object.keys(master.lookUp.text); const bl = Object.keys(child.lookUp.text); master.lookUp.text[bl[bl.length-1]] = child.lookUp.text[bl[bl.length-1]] ; console.log(master.lookUp)