Objekt kombinieren und Eigenschaft löschen


8

Angenommen, ich habe eine Reihe von Objekten, die so strukturiert sind

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

Wie kann ich es so umstrukturieren:

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

Ich habe es versucht

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

Die chkEigenschaft kann erfolgreich gelöscht werden. Wie kann ich die beiden Objekte kombinieren?


welche zwei Objekte? nach dem Löschen (das nur ein einziges Objekt hat) oder vor dem Löschen?
— Prashant Pimpale

2
Was ist die Logik? Was ist der Zweck von chk?
— Trincot

1
Benötigen Sie wirklich das Endergebnis, um ein Array zu sein, wenn es nur ein Objekt enthält?
— Barmar

Antworten:


9

Sie können sie verteilen Object.assign, um ein neues Objekt zu erstellen, und dann die chkEigenschaft von diesem Objekt entfernen :

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

Eine andere Methode, ohne zu löschen, wäre, chkauf der linken Seite zu destrukturieren und die Restsyntax zu verwenden:

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


Beeindruckend! Was ist das _? :)
— StepUp

1
Nur ein unbenutzter Variablenname. Hätte es belassen können chk, aber das könnte etwas irreführend sein, da nicht beabsichtigt ist, es erneut zu verwenden
— CertainPerformance
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.