2012-03-15 117 views
5

Tengo el siguiente objeto JSON que im iteración a través de:Quitar elemento de objeto 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]; 
    }  

}); 

Sólo quiero eliminar un elemento del objeto bajo ciertas condiciones. En este caso, si el precio es inferior a 5.

He intentado eliminar, pero no hace nada.

+1

Su código es correcto. (simplemente no tiene ningún artículo con precio <5) – ori

+0

Por favor, no firmas. –

Respuesta

9

Funciona bien, si el valor es < 5. En su caso el valor es 5.55 cuales es > 5

DEMO - Para mostrar el objeto se borraron cuando el valor es < 5

+0

Ah .... Tenía otra declaración a continuación que estaba volviendo a agregar el objeto. ¡Gracias! – dzm

0

Es posible que jQuery esté haciendo algo extraño que usted no espera. Algo así como cómo PHP foreach crea una copia de la matriz original para trabajar.

Trate JS primas:

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

Dicho esto, ninguno de los precios de su objeto son menos de 5, por lo que, obviamente, se borrará ninguno de ellos.