[
{"id":1,"id_parent":7,"name":"sub category of cat 7-1"},
{"id":2,"id_parent":7,"name":"sub category of cat 7-2"},
{"id":3,"id_parent":8,"name":"sub category of cat 8-1"},
{"id":4,"id_parent":8,"name":"sub category of cat 8-2"}
]
Je veux trouver un groupe d'objets dans un plus grand groupe. Par exemple, récupérez simplement les objets qui ont id_parent = 7. Maintenant, j'utilise une boucle for pour le faire, mais je me demande s'il existe une autre solution pour le faire. Je vous remercie
4 réponses
Si votre navigateur a Array.filter
, vous pouvez le faire ce:
var children_of_7 = data.filter(function(item) {
return item.id_parent === 7;
});
Si votre navigateur ne l'a pas nativement, vous pouvez le caler.
Si vous avez un navigateur qui fournit l'implémentation d'ECMAScript 5th Edition, vous pouvez en effet le faire:
var filteredResults = data.filter(function(item) {
return item.id_parent === 7;
});
Sinon votre bonne boucle olé est la solution:
var filteredResults = [];
for (var i = 0, l = data.length; i < l; i++) {
if (data[i].id_parent === 7) {
filteredResults.push(data[i]);
}
}
Gardez à l'esprit, cependant, qu'au moins AFAIK, filter
a une pénalité de performance.
J'ai rassemblé un test rapide pour référence - peut être vu ici.
Et la différence est substantielle.
Underscore.js offre des capacités de recherche intéressantes:
http://documentcloud.github.com/underscore/
Non, il n'y en a pas. Tout ce que vous pouvez faire est de parcourir votre JSON.
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.