Ich habe ein Javascript-Objekt (ich erhalte die Daten tatsächlich über eine Ajax-Anfrage):
var data = {};
Ich habe ein paar Sachen hinzugefügt:
data[0] = { "ID": "1"; "Status": "Valid" }
data[1] = { "ID": "2"; "Status": "Invalid" }
Jetzt möchte ich alle Objekte mit einem ungültigen Status entfernen (aber alles in der Reihenfolge beibehalten):
var tempData = {};
for ( var index in data ) {
if ( data[index].Status == "Valid" ) {
tempData.push( data );
}
}
data = tempData;
In meinen Augen sollte dies alles funktionieren, aber ich erhalte einen Fehler, der tempData.push
keine Funktion ist. Ich verstehe, warum es nicht dasselbe ist wie ein Array, aber was könnte ich sonst tun?
javascript
json
Andrew Jackman
quelle
quelle
Antworten:
push()
ist für Arrays , nicht für Objekte , verwenden Sie also die richtige Datenstruktur.quelle
for...in
Schleife zu ändern .Objekte unterstützen keine Push-Eigenschaft, aber Sie können sie auch mit dem Index als Schlüssel speichern.
Ich denke, dies ist einfacher, wenn Sie das Objekt entfernen, wenn sein Status ungültig ist.
Und schließlich müssen Sie keine var temp erstellen -
quelle
Du musst machen
var tempData = new Array();
Push ist eine Array-Funktion.
quelle
new Array()
und nicht[]
?[]
ist die primäre Methode zum Erstellen von Arrays, die anderen sind Alternativen und können sogar überschrieben werden.new Array()
böse istDie Programmiersprache Javascript unterstützt das funktionale Programmierparadigma, sodass Sie mit diesen Codes problemlos arbeiten können.
quelle
Ich gehe davon aus, dass Sie WIRKLICH ein Objekt vom Server erhalten und ein Objekt bei der Ausgabe erhalten möchten
Code-Snippet anzeigen
quelle
Ich bin mit der richtigen Antwort oben einverstanden, aber ... Sie geben immer noch nicht den Indexwert für die Daten an, die Sie zu tempData hinzufügen möchten. Ohne den Wert [index] wird das gesamte Array hinzugefügt.
quelle
Machen :
quelle
new Array()
und nicht[]
?