Ich möchte die bad
Eigenschaft von jedem Objekt im Array entfernen . Gibt es einen besseren Weg, als eine for
Schleife zu verwenden und sie von jedem Objekt zu löschen?
var array = [{"bad": "something", "good":"something"},{"bad":"something", "good":"something"},...];
for (var i = 0, len = array.length; i < len; i++) {
delete array[i].bad;
}
Es scheint nur so, als ob es einen Weg geben sollte prototype
, etwas zu benutzen oder so. Ich weiß es nicht. Ideen?
javascript
javascript-objects
Zack Argyle
quelle
quelle
bad
?Array
Prototyp JS beziehen oder auf den Prototyp, den Dystroy beispielhaft darstelltAntworten:
Die einzigen anderen Möglichkeiten sind kosmetische und sind in der Tat Schleifen.
Zum Beispiel :
Anmerkungen:
delete
ist einer der schlimmsten "Optimierungskiller" . Die Verwendung beeinträchtigt häufig die Leistung Ihrer Anwendungen. Sie können es nicht vermeiden, wenn Sie eine Eigenschaft wirklich entfernen möchten, aber Sie können die Eigenschaft häufig entweder auf festlegenundefined
oder einfach neue Objekte ohne die Eigenschaft erstellen.quelle
for(var i = 0; i < array.length ) delete array[i].bad
forEach
weil ich den Code ausdrucksvoller finde (und weil ich vor langer Zeit aufgehört habe, mir Sorgen um den Internet Explorer zu machen).forEach
ist generisch und semantisch bedeutungslos für sich, wie einefor
Schleife.Mit ES6 können Sie jedes Objekt dekonstruieren, um ein neues Objekt ohne benannte Attribute zu erstellen:
quelle
const newArray = array.map(({ bad, ...item }) => item);
// eslint-disable-next-line no-unused-vars
Ich bevorzuge die Verwendung von map, um die Eigenschaft zu löschen und dann das neue Array-Element zurückzugeben.
quelle
return
Erklärung nicht erforderlicharray.forEach(v => delete v.bad);
Wenn Sie underscore.js verwenden :
quelle
Eine Lösung mit Prototypen ist nur möglich, wenn Ihre Objekte gleich sind:
Aber dann ist es einfach (und
O(1)
):quelle
Für meine Meinung ist dies die einfachste Variante
quelle
Ich werde vorschlagen,
Object.assign
innerhalb einerforEach()
Schleife zu verwenden, damit die Objekte kopiert werden und das ursprüngliche Array von Objekten nicht beeinflusstquelle
Diese Frage ist jetzt etwas alt, aber ich möchte eine alternative Lösung anbieten, die keine Quelldaten mutiert und nur minimalen manuellen Aufwand erfordert:
Es ist immer noch etwas weniger als perfekt, behält jedoch ein gewisses Maß an Unveränderlichkeit bei und bietet die Flexibilität, mehrere Eigenschaften zu benennen, die Sie entfernen möchten. (Vorschläge willkommen)
quelle
Ich habe versucht, ein neues Objekt zu erstellen, ohne die Coulmns in Vue.js zu löschen.
// selectedContactsDto [] = Objekt mit Liste der in meinem Projekt erstellten Array-Objekte
quelle
Um ein Schlüsselwertpaar-Formularobjektarray zu entfernen, wird Postgres SQL als Datenbank wie in diesem Beispiel verwendet:
Dies ist ein Benutzerfunktion, das Benutzerdetails zurückgibt. Wir müssen den Schlüssel "api_secret" aus den Zeilen entfernen:
Die obige Funktion gibt das folgende Objekt als JSON-Antwort zurück
Nach dem Hinzufügen dieser Zeile wird
responseObject._embedded[0].api_secret = undefined
das folgende Ergebnis als JSON-Antwort angezeigt:quelle
Sie können dieser besser lesbaren, nicht erwarteten Erhöhung folgen, da der Schlüssel nicht gefunden wurde:
quelle
quelle