Je n'avais pas déjà vu cela dans le trait de soulignement, alors je voulais le jeter là-bas.
J'ai trouvé cela utile lorsque je fais des choses comme construire une liste de livres recommandés en fonction des livres qu'un utilisateur a consultés, aimés ou que ses amis ont aimés. Ensuite, montrez-leur une liste unique de recommandations probables.
function distinct(items, prop) {
var unique = [];
var distinctItems = [];
_.each(items, function(item) {
if (unique[item[prop]] === undefined) {
distinctItems.push(item);
}
unique[item[prop]] = 0;
});
return distinctItems;
}
// likedBooks + viewedBooks + friendLikedBooks + friendViewedBooks
var books = [
{ name: 'Holes', id: 1 },
{ name: 'Treasure Island', id: 2 },
{ name: 'Holes', id: 2 }
];
var uniqueBooks = distinct(books, 'id');
console.log(uniqueBooks);
/**
var uniqueBooks = [
{ name: 'Holes', id: 1 },
{ name: 'Treasure Island', id: 2 }
];
*/
J'adorerais trouver un PR plus approprié, mais je voulais d'abord voir ce que les gens pensaient.
Vous pouvez accomplir cela avec ce qui suit, bien que vous ne puissiez pas utiliser le raccourci du nom de propriété.
_.uniq(books, function(book) { return book.id; })
Ty @braddunbar Je ne pensais pas que je pouvais faire ça à partir des documents. Ce serait vraiment utile comme deuxième exemple.
http://underscorejs.org/#uniq
La nouvelle méthode _.property
devrait être en mesure de résoudre ce cas d'utilisation assez bien.
Commentaire le plus utile
Vous pouvez accomplir cela avec ce qui suit, bien que vous ne puissiez pas utiliser le raccourci du nom de propriété.