我这里有一个对象数组。
var list = [
{"id": 439, "name": "John"},
{"id": 439, "name": "John"},
{"id": 100, "name": "Kevin"},
{"id": 120, "name": "Max"},
{"id": 439, "name": "John"}
];
我需要从这个数组中提取出最常出现的对象,并构建一个按最流行名称排序的新数组。
到目前为止,我尝试按照这个主题中的方式进行操作:Underscore.js:在数组中查找最常出现的值?
// Build temp list
temp_list = _(
_.chain(
_(list).pluck('id')
)
.countBy()
.pairs()
.value()
)
.sortBy(1)
.reverse();
// Build final list with most frequently occurring first
_.map(temp_list, function(current) {
return _.findWhere(list, {
'id': parseInt(current[0])
});
});
有没有一种方法可以直接对初始列表进行排序,而不需要创建临时列表来改进此代码?
id
和name
属性相同,你想要将两个对象视为相等吗?只考虑id
属性? - Oriol