如何从集合中查找不同值的数量

时间:2012-08-17 15:54:34

标签: backbone.js

假设我有一个类似的集合:

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

我如何获得:

不同名称的数量,例如2

不同的名字,在这种情况下,jonas和smirk?

1 个答案:

答案 0 :(得分:12)

使用一些Backbone和Underscore魔法,结合collection.pluck_.uniq

  

采摘 collection.pluck(属性)
  从集合中的每个模型中获取属性。等效于调用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/