4

假设我有一个像这样的集合:

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

如何得到 :

不同名称的数量,例如在本例中为 2

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

4

1 回答 1

12

使用一些 Backbone 和 Underscore 魔法,结合collection.pluckand _.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 回答