Combina objetos y elimina una propiedad


8

Supongo que tengo una matriz de objetos estructurados como este

"err": [
    {
        "chk" : true,
        "name": "test"
    },
    {
        "chk" :true
        "post": "test"
    }
]

¿Cómo puedo reestructurarlo así:

"err": [
    {
        "post": "test"
        "name": "test"
    }
]

Lo intenté

arr.filter(obj => delete obj.chk);

Puede eliminar con éxito la chkpropiedad, pero ¿cómo puedo combinar los dos objetos?


cuales dos objetos? después de eliminar (que tiene un solo objeto) o antes de eliminar?
— Praspant Pimpale

2
¿Cuál es la lógica? ¿Para qué sirve chk?
— Trincot

1
¿Realmente necesitas que el resultado final sea una matriz si solo hay un objeto en él?
— Barmar

Respuestas:


9

Puede extenderlos Object.assignpara crear un nuevo objeto, luego eliminar la chkpropiedad de ese objeto:

const err = [
    {
        "chk" : true,
        "name": "test"
    },
    {
        "chk" :true,
        "post": "test"
    }
];
const newObj = Object.assign({}, ...err);
delete newObj.chk;
console.log([newObj]);

Otro método, sin eliminar, sería desestructurar chken el lado izquierdo y usar la sintaxis rest:

const err = [
    {
        "chk" : true,
        "name": "test"
    },
    {
        "chk" :true,
        "post": "test"
    }
];
const { chk: _, ...newObj } = Object.assign({}, ...err);
console.log([newObj]);


¡Guauu! ¿Qué es esto _? :)
— StepUp

1
Solo un nombre de variable no utilizado. Podría haberlo dejado chk, pero eso puede ser un poco engañoso ya que no hay intención de usarlo nuevamente
— CertainPerformance
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.