Tengo algo de JSON que se ve así
var js = '{ "person" : { "firstname" : "Steve", "lastname" : "Smith", "other": [ { "age" : "32", "deceased" : false }, { "age" : "14", "deceased" : false }, { "age" : "421", "deceased" : false } ] } }'Sé cómo elimino todos los "otros" al hacer esto
var j = JSON.parse(js) delete j[person.other]pero lo que realmente quiero es eliminar el nodo "otro" con una condición de edad = 14.
El resultado JSON que estoy buscando es
{ "person" : { "firstname" : "Steve", "lastname" : "Smith", "other": [ { "age" : "32", "deceased" : false }, { "age" : "421", "deceased" : false } ] } }He mirado el operador de eliminación aquí y no proporciona un condicional.
Lo siento si esta es una pregunta demasiado simple. Estoy aprendiendo.
Gracias
Puede usar un filtro en la matriz haciendo algo como
j[person.other].filter(x => x.age != 14)Doc sobre cómo funciona el filtro más en profundidad aquí:
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
El mejor enfoque para esto sería no alterar el json, sino crear otro en su lugar:
const filtered = { ...json, other: json.other.filter(item => item.age !== "14") }Si realmente necesita modificar el json, puede hacer lo siguiente:
let index = json.other.findIndex(item => item.age === "14") while (index !== -1) { json.other.splice(index, 1) index = json.other.findIndex(item => item.age === "14") }