Comment Filtrer un complexe d'objet json à l'aide de javascript?
J'ai le texte suivant objet json :
var json = {
"Lofts": "none",
"Maisons": "2",
"HOMES": [{
"home_id": "1",
"price": "925",
"num_of_beds": "2"
}, {
"home_id": "2",
"price": "1425",
"num_of_beds": "4",
}, {
"home_id": "3",
"price": "333",
"num_of_beds": "5",
}]
};
Comment puis-je filtrer cet objet et de rester avec les MAISONS de la propriété où home_id = 2 ?
Résultat:
var json = {
"Lofts": "none",
"Maisons": "2",
"HOMES": [{
"home_id": "2",
"price": "1425",
"num_of_beds": "4",
}]
};
Est-il possible que je puisse le cycle de l'objet et mantein toutes les propriétés( également lofts et maisons)?
Grâce
- Est la propriété
home_id
une valeur unique pour tous les objets de lajson.HOMES
tableau?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
Array#filtre
et affecter le résultat directement à la propriétéHOMES
.JS:
return a.home_id = ['1','2'];
mais il ne fonctionne pas comme prévu.indexOf
avec une comparaison, commereturn ['1','2'].indexOf(a.home_id) !== -1;
ou de vérifier avecincludes
, commereturn ['1','2'].includes(a.home_id);
.Avec l'utilisation de l'utilitaire de bibliothèque Lodash, vous pouvez utiliser la méthode trouver si
home_id
est unique.Trouver: Itère sur les éléments de
collection
(Tableau|Objet), qui retourne le premier élémentpredicate
retourne truthy pour. Le prédicat est invoquée avec trois arguments: (valeur de l'index|la clé de la collecte).Code:
JS:
HTML:
Si il y a plusieurs objets avec le même
home_id
vous devriez faire une filtre:_.filter(collection, [predicate=_.identity])
Filtre: Itère sur les éléments de
collection
(Tableau|Objet), qui retourne un tableau de tous les éléments prédicat retourne truthy pour. Le prédicat est invoquée avec trois arguments: (valeur de l'index|la clé de la collecte).Code:
JS:
HTML:
where
de l'alinéa (donc, par définition, il pourrait y avoir plus d'un match). Aussi, il y a beaucoup plus simple de rapprochement, à la fois dans lodash et de souligner:_.where(json.HOMES, {home_id: "2"}
(underscorejs.org/#findWhere) ou_.filter(json.HOMES, {home_id: "2"}
(lodash.com/docs#filter).