假设我有一个像这样的集合:
{
"id": 1,
"name": "jonas",
},
{
"id": 2,
"name": "jonas",
},
{
"id":3,
"name": "smirk",
}
Run Code Online (Sandbox Code Playgroud)
如何得到 :
不同名称的数量,如本例中的2
不同的名字,在这种情况下,jonas和smirk?
nik*_*shr 12
使用一些Backbone和Underscore魔法,组合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);
Run Code Online (Sandbox Code Playgroud)
和演示http://jsfiddle.net/nikoshr/PSFXg/