Combinar objeto e excluir uma propriedade

8

Suponha que eu tenha uma matriz de objetos estruturados como este

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

Como posso reestruturá-lo assim:

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

eu tentei

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

Ele pode excluir a chkpropriedade com êxito , mas como posso combinar os dois objetos?

Principiante
fonte
quais dois objetos? após a exclusão (que possui apenas um objeto) ou antes da exclusão?
Prashant Pimpale
2
Qual é a lógica? Qual é o propósito chk?
trincot 14/02
1
Você realmente precisa que o resultado final seja uma matriz se houver apenas um objeto?
Barmar 14/02

Respostas:

9

Você pode espalhá-los Object.assignpara criar um novo objeto e remover a chkpropriedade desse objeto:

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

Outro método, sem excluir, seria desestruturar chkno lado esquerdo e usar a sintaxe rest:

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

CertainPerformance
fonte
Uau! O que é isso _? :)
StepUp 14/02
1
Apenas um nome de variável não utilizado. Poderia ter deixado chk, mas isso pode ser um pouco enganador, já que não há intenção de usá-lo novamente
CertainPerformance