Mam obiekt javascript (faktycznie otrzymuję dane poprzez żądanie AJAX):
var data = {};
Dodałem do niego kilka rzeczy:
data[0] = { "ID": "1"; "Status": "Valid" }
data[1] = { "ID": "2"; "Status": "Invalid" }
Teraz chcę usunąć wszystkie obiekty z nieprawidłowym statusem (ale zachowaj kolejność w tej samej kolejności):
var tempData = {};
for ( var index in data ) {
if ( data[index].Status == "Valid" ) {
tempData.push( data );
}
}
data = tempData;
Moim zdaniem wszystko to powinno działać, ale otrzymuję błąd, który tempData.push
nie jest funkcją. Rozumiem, dlaczego to nie to samo, co tablica, ale co mogę zrobić inaczej?
javascript
json
Andrew Jackman
źródło
źródło
Odpowiedzi:
push()
dotyczy tablic , a nie obiektów , więc używaj odpowiedniej struktury danych.źródło
for...in
pętli.Obiekty nie obsługują właściwości push, ale można ją również zapisać, używając indeksu jako klucza,
Myślę, że jest to łatwiejsze, jeśli usuniesz obiekt, jeśli jego status jest nieprawidłowy, wykonując.
I wreszcie nie musisz tworzyć zmiennej temp -
źródło
Musisz zrobić
var tempData = new Array();
Push to funkcja Array.
źródło
new Array()
a nie[]
?[]
jest podstawowym sposobem tworzenia tablic, inne są alternatywami i mogą nawet zostać nadpisane.new Array()
jest złoJęzyk programowania Javascript obsługuje paradygmat programowania funkcjonalnego, dzięki czemu można łatwo zrobić z tymi kodami.
źródło
Zakładam, że NAPRAWDĘ otrzymujesz obiekt z serwera i chcesz uzyskać obiekt na wyjściu
Pokaż fragment kodu
źródło
Zgadzam się z poprawną odpowiedzią powyżej, ale .... nadal nie podajesz wartości indeksu dla danych, które chcesz dodać do tempData. Bez wartości [index] zostanie dodana cała tablica.
źródło
Robić :
źródło
new Array()
a nie[]
?