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?

Principiante
fuente
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]);

Cierto rendimiento
fuente
¡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