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?

Anfänger
quelle
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]);

Bestimmte Leistung
quelle
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