2012-03-15 13 views
5

Ho il seguente oggetto JSON che im scorrendo:Rimuovi elemento dalla oggetto JSON

obj = { '19': { id: '19', price: 5.55}, 
     '20': { id: '20', price: 10.00} } 

$.each(obj, function(index, value){ 
    if(value.price < 5) 
    { 
    delete obj[index]; 
    }  

}); 

Voglio solo eliminare un elemento dall'oggetto a determinate condizioni. In questo caso, se il prezzo è inferiore a 5.

Ho provato a eliminare, ma non fa nulla.

+1

Il vostro codice è corretto. (semplicemente non hai nessun articolo con prezzo <5) – ori

+0

Per favore, nessuna firma. –

risposta

9

Funziona bene se il valore è < 5. Nel tuo caso il valore è 5.55 quali è > 5

DEMO - Per mostrare l'oggetto ottenuto cancellato quando il valore è < 5

+0

Ah .... Ho avuto un'altra dichiarazione qui sotto che stava aggiungendo nuovamente l'oggetto. Grazie! – dzm

0

È possibile che jQuery stia facendo qualcosa di strano che non te lo aspetti. Un po 'come PHP foreach crea una copia della matrice originale su cui lavorare.

Prova JS prime:

obj = {...}; 
for(var x in obj) { 
    if(obj[x].price < 5) delete obj[x]; 
} 

Detto questo, nessuno di prezzi del vostro oggetto sono meno di 5, quindi ovviamente nessuno di loro sarà eliminato.