703 Stimmen

Wie kann ich Objekte aus einem assoziativen JavaScript-Array entfernen?

Angenommen, ich habe diesen Code:

var myArray = new Object();
myArray["firstname"] = "Bob";
myArray["lastname"] = "Smith";
myArray["age"] = 25;

Wenn ich nun "Nachname" entfernen möchte?....gibt es eine Entsprechung von myArray["lastname"].remove() ?

(Ich brauche das Element nicht, weil die Anzahl der Elemente wichtig ist und ich die Dinge sauber halten möchte).

32 Stimmen

Ein Tipp: Verwechseln Sie nicht Arrays und Maps. Einige Sprachen, wie php, haben ein einziges Objekt für beide. Obwohl Sie hier den richtigen Typ verwendet haben (new Object()), haben Sie es myArray genannt, es ist nur eine Frage der Standards einer Sprache.

0 Stimmen

Vergessen Sie nicht, dass JavaScript typfrei ist und alles ein Objekt ist. Siehe die Antwort von Saul unten.

4 Stimmen

@StephanKristyn - um genau zu sein, hat JS Typen, aber in einer dynamisch et schwach Weise. Zum Beispiel sind die Variablen in der Tat typfrei, ihre Werte jedoch nicht. Das ist die dynamisch Teil. Schwach bedeutet, dass Operationen zwischen verschiedenen Werttypen sind nicht genau definiert und beruhen auf Konvertierungen im Hintergrund; zum Beispiel "Test" + {}; ist eine vollkommen gültige JS-Anweisung.

12voto

paveldroo Punkte 460

Im Airbnb Style Guide gibt es eine elegante Möglichkeit, dies zu tun (ECMAScript 7):

const myObject = {
  a: 1,
  b: 2,
  c: 3
};
const { a, ...noA } = myObject;
console.log(noA); // => { b: 2, c: 3 }

Copyright: https://codeburst.io/use-es2015-object-rest-operator-to-omit-properties-38a3ecffe90

9voto

Dzeimsas Zvirblis Punkte 367

Wie bereits in anderen Antworten erwähnt, verwenden Sie kein JavaScript-Array, sondern ein JavaScript-Objekt, das fast so funktioniert wie ein assoziatives Array in anderen Sprachen, mit der Ausnahme, dass alle Schlüssel in Zeichenketten umgewandelt werden. Das neue Karte speichert Schlüssel als ihren ursprünglichen Typ.

Wenn Sie ein Array und kein Objekt hätten, könnten Sie die Array-Funktion .filtern Funktion, um ein neues Array ohne das zu entfernende Element zurückzugeben:

var myArray = ['Bob', 'Smith', 25];
myArray = myArray.filter(function(item) {
    return item !== 'Smith';
});

Wenn Sie einen älteren Browser und jQuery verwenden, hat jQuery eine $.grep Methode, die in ähnlicher Weise funktioniert:

myArray = $.grep(myArray, function(item) {
    return item !== 'Smith';
});

1 Stimmen

Perfekte Erklärung. Ich habe Filter verwendet, um das gewünschte Ergebnis zu erzielen. Würden Sie erklären, wie das Rückgabeelement funktioniert, um das Objekt aus dem Array zu entfernen. Ich nehme an, es gibt das Array zurück, solange es nicht die Zeichenfolge enthält, die Sie enthalten.

6voto

HarpyWar Punkte 113

Methode verwenden splice um ein Element vollständig aus einem Objekt-Array zu entfernen:

Object.prototype.removeItem = function (key, value) {
    if (value == undefined)
        return;

    for (var i in this) {
        if (this[i][key] == value) {
            this.splice(i, 1);
        }
    }
};

var collection = [
    { id: "5f299a5d-7793-47be-a827-bca227dbef95", title: "one" },
    { id: "87353080-8f49-46b9-9281-162a41ddb8df", title: "two" },
    { id: "a1af832c-9028-4690-9793-d623ecc75a95", title: "three" }
];

collection.removeItem("id", "87353080-8f49-46b9-9281-162a41ddb8df");

1 Stimmen

Dies ist eine allgemeinere Lösung, kann zu Ihrer js-Datei hinzugefügt werden und die Methode wird für alle Arrays verfügbar sein, nicht nur für ein Array.

5voto

Kenan Soylu Punkte 76

Wenn Sie einen funktionelleren und eleganteren Ansatz wünschen, können Sie wie folgt vorgehen:

const o = { firstName: "foo", lastName: "bar" };
const { lastName, ...removed } = o;
lastName // bar
removed // { firstName: "foo" }

Beachten Sie, dass der Wert von removed ist undefiniert, wenn keine Gegenstände mehr im Objekt vorhanden sind.

5voto

Ravindra Miyani Punkte 344

Durch die Verwendung des "delete" Schlüsselwort, wird das Array-Element aus dem Array in JavaScript gelöscht.

Zum Beispiel,

Beachten Sie die folgenden Aussagen.

var arrayElementToDelete = new Object();

arrayElementToDelete["id"]           = "XERTYB00G1";
arrayElementToDelete["first_name"]   = "Employee_one";
arrayElementToDelete["status"]       = "Active";

delete arrayElementToDelete["status"];

Die letzte Zeile des Codes entfernt das Array-Element, dessen Schlüssel "status" ist, aus dem Array.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X