Tengo un objeto javascript (de hecho, obtengo los datos a través de una solicitud ajax):
var data = {};
Le he añadido algunas cosas:
data[0] = { "ID": "1"; "Status": "Valid" }
data[1] = { "ID": "2"; "Status": "Invalid" }
Ahora quiero eliminar todos los objetos con un estado no válido (pero mantener todo en el mismo orden):
var tempData = {};
for ( var index in data ) {
if ( data[index].Status == "Valid" ) {
tempData.push( data );
}
}
data = tempData;
En mi opinión, todo esto debería funcionar, pero recibo un error que tempData.push
no es una función. Entiendo por qué no es lo mismo que una matriz, pero ¿qué podría hacer de otra manera?
javascript
json
Andrew Jackman
fuente
fuente
Respuestas:
push()
es para matrices , no para objetos , así que use la estructura de datos correcta.fuente
for...in
bucle también.Los objetos no admiten la propiedad push, pero también puede guardarlos usando el índice como clave,
Creo que esto es más fácil si se elimina el objeto si su estado no es válido.
Y finalmente no necesitas crear una var temp -
fuente
Usted debe hacer
var tempData = new Array();
Push es una función de matriz.
fuente
new Array()
y no[]
?[]
es la forma principal de crear matrices, las otras son alternativas e incluso se pueden sobrescribir.new Array()
es el malEl lenguaje de programación Javascript admite el paradigma de programación funcional, por lo que puede hacerlo fácilmente con estos códigos.
fuente
Supongo que REALMENTE obtienes el objeto del servidor y quieres obtener el objeto en la salida
Mostrar fragmento de código
fuente
Estoy de acuerdo con la respuesta correcta anterior, pero ... aún no está dando el valor de índice para los datos que desea agregar a tempData. Sin el valor de [índice], se agregará toda la matriz.
fuente
Hacer:
fuente
new Array()
y no[]
?