私はこれをアンダースコアでまだ見ていなかったので、これをそこに捨てたかったのです。
これは、ユーザーが閲覧、高評価、または友だちが高評価した本に基づいて、おすすめの本のリストを作成する場合に便利です。 次に、可能性のある推奨事項の一意のリストを表示します。
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 }
];
*/
もっと適切なPRを考えたいのですが、人々が最初にどう思ったかを見たかったのです。
プロパティ名の省略形は使用できませんが、次の方法でこれを実現できます。
_.uniq(books, function(book) { return book.id; })
Ty @ braddunbarドキュメントからそれができるとは思いませんでした。 そこでの2番目の例として本当に役立つでしょう。
http://underscorejs.org/#uniq
新しい_.property
メソッドは、このユースケースを非常にうまく解決できるはずです。
最も参考になるコメント
プロパティ名の省略形は使用できませんが、次の方法でこれを実現できます。