Underscore: (アイデア)プロパティによるオブジェクトの一意の配列

作成日 2013年12月10日  ·  3コメント  ·  ソース: jashkenas/underscore

私はこれをアンダースコアでまだ見ていなかったので、これをそこに捨てたかったのです。

これは、ユーザーが閲覧、高評価、または友だちが高評価した本に基づいて、おすすめの本のリストを作成する場合に便利です。 次に、可能性のある推奨事項の一意のリストを表示します。

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を考えたいのですが、人々が最初にどう思ったかを見たかったのです。

question

最も参考になるコメント

プロパティ名の省略形は使用できませんが、次の方法でこれを実現できます。

_.uniq(books, function(book) { return book.id; })

全てのコメント3件

プロパティ名の省略形は使用できませんが、次の方法でこれを実現できます。

_.uniq(books, function(book) { return book.id; })

Ty @ braddunbarドキュメントからそれができるとは思いませんでした。 そこでの2番目の例として本当に役立つでしょう。
http://underscorejs.org/#uniq

新しい_.propertyメソッドは、このユースケースを非常にうまく解決できるはずです。

このページは役に立ちましたか?
0 / 5 - 0 評価