Heim >Web-Frontend >js-Tutorial >Wie entferne ich Null- und undefinierte Attribute aus einem JavaScript-Objekt?
Leere Attribute aus einem Objekt in Javascript entfernen
Bei der Arbeit mit JavaScript-Objekten kann es erforderlich sein, Attribute zu entfernen, die undefiniert oder null sind . Dies kann dabei helfen, Daten zu bereinigen, unnötige Felder zu entfernen oder Objekte für die Speicherung vorzubereiten. Abhängig von der verwendeten JavaScript-Version gibt es mehrere Möglichkeiten, diese Aufgabe zu erfüllen.
ES10/ES2019
In ES10/ES2019 ist die Verwendung der einfachste Ansatz die Object.fromEntries()-Methode, um ein neues Objekt zu erstellen, das nur die nicht leeren Attribute enthält:
let o = Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
Dies kann auch als Funktion geschrieben werden:
function removeEmpty(obj) { return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null)); }
Für verschachtelte Objekte kann eine rekursive Funktion verwendet werden:
function removeEmpty(obj) { return Object.fromEntries( Object.entries(obj) .filter(([_, v]) => v != null) .map(([k, v]) => [k, v === Object(v) ? removeEmpty(v) : v]) ); }
ES6/ES2015
In ES6/ES2015 kann der folgende Einzeiler verwendet werden. Beachten Sie jedoch, dass er das ursprüngliche Objekt mutiert, anstatt ein neues zu erstellen eins:
Object.keys(obj).forEach((k) => obj[k] == null && delete obj[k]);
Alternativ erstellt die folgende einzelne Deklaration ein neues Objekt, ohne das Original zu verändern:
let o = Object.keys(obj) .filter((k) => obj[k] != null) .reduce((a, k) => ({ ...a, [k]: obj[k] }), {});
Dies kann auch als Funktion geschrieben werden:
function removeEmpty(obj) { return Object.entries(obj) .filter(([_, v]) => v != null) .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {}); }
Für verschachtelte Objekte kann die folgende rekursive Funktion sein verwendet:
function removeEmpty(obj) { return Object.entries(obj) .filter(([_, v]) => v != null) .reduce( (acc, [k, v]) => ({ ...acc, [k]: v === Object(v) ? removeEmpty(v) : v }), {} ); }
ES5/ES2009
In ES5/ES2009 ist der Code ausführlicher:
function removeEmpty(obj) { return Object.keys(obj) .filter(function (k) { return obj[k] != null; }) .reduce(function (acc, k) { acc[k] = obj[k]; return acc; }, {}); }
Dies kann geschrieben werden auch im imperativen Stil:
function removeEmpty(obj) { const newObj = {}; Object.keys(obj).forEach(function (k) { if (obj[k] && typeof obj[k] === "object") { newObj[k] = removeEmpty(obj[k]); } else if (obj[k] != null) { newObj[k] = obj[k]; } }); return newObj; }
Endlich eine rekursive Version in einem funktionalen Stil geschrieben:
function removeEmpty(obj) { return Object.keys(obj) .filter(function (k) { return obj[k] != null; }) .reduce(function (acc, k) { acc[k] = typeof obj[k] === "object" ? removeEmpty(obj[k]) : obj[k]; return acc; }, {}); }
Durch die Anwendung dieser Techniken können Sie leere Attribute effektiv aus einem Objekt in verschiedenen Versionen von JavaScript entfernen und so sicherstellen, dass Ihre Daten sauber und bereit für die weitere Verarbeitung oder Speicherung sind.
Das obige ist der detaillierte Inhalt vonWie entferne ich Null- und undefinierte Attribute aus einem JavaScript-Objekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!