underscore.js filtrer un tableau d'objets en fonction d'une autre
Je suis en train de filtrer un tableau d'objets en fonction d'une autre. La commune de la propriété id id
.
Je ne suis pas sûr filtre + chacun est la meilleure façon de le faire ou de carte de réduire. De toute façon, code ci-dessous ne fonctionne pas comme out
est la liste vide.
var aaa = [
{name: "AAA", id: 845},
{name: "BBB", id: 839},
{name: "CCC", id: 854}
];
var bbb = [
{id: 839},
{id: 854}
];
var out = _.filter(aaa, function(val){
return _.each(this, function(val2){
return val['id'] === val2['id']
});
}, bbb);
Vous devez vous connecter pour publier un commentaire.
Il suffit de créer un "ensemble" de la validité de l'ids et de l'utilisation que "set" pour faire le filtrage:
Remplissage
ids
est rapide, c'est dans le n * amorti O(1), j'.e O(n). De même pour le filtrage.Si vous utilisez
each(…)
dans la boucle interne, vous aurez en O(n2). Pour les plus grands ensembles de données, ce serait devenu très lent. Également l'imbrication de rendre le code plus difficile à lire/comprendre au premier coup d'œil.Voir que le code ciselée dans l'action: http://jsfiddle.net/SMtX5/
vous pouvez utiliser
_.find
de filtre:Vous pouvez utiliser
_.certains(liste [itérateur], [contexte])
.Il retourne vrai si l'une des valeurs de la liste passer le itérateur vérité test.
Ici est jsfiddle. http://jsfiddle.net/h98ej/
Vous avez juste besoin de la pure JS fonctions de tableau de le faire en supposant que votre cas d'utilisation.