4

次のようなコレクションがあるとします。

  {
     "id": 1,
     "name": "jonas",
  },
  {
     "id": 2,
     "name": "jonas",
  },
  {
     "id":3,
     "name": "smirk",
  }

入手方法:

個別の名前の数。この場合は 2

この場合、jonas と smirk という異なる名前は?

4

1 に答える 1

12

いくつかのバックボーンとアンダースコア マジックを使用して、collection.pluckとを組み合わせ_.uniqます。

pluck collection.pluck(attribute) コレクション
内の各モデルから属性を取り出します。map を呼び出し、反復子から単一の属性を返すことと同じです。

uniq _.uniq(array, [isSorted], [iterator])
=== を使用してオブジェクトの等価性をテストし、配列の重複のないバージョンを生成します。
[...]

var c = new Backbone.Collection([
    {id: 1, name: "jonas"},
    {id: 2, name: "jonas"},
    {id: 3, name: "smirk"}
]);

var names = _.uniq(c.pluck('name'));
console.log(names.length);
console.log(names);

そしてデモhttp://jsfiddle.net/nikoshr/PSFXg/

于 2012-08-17T16:01:55.437 に答える