Ich habe hier eine Reihe von Objekten.Underscore: Finden Sie das am häufigsten vorkommende Objekt in einem Array?
var list = [
{"id": 439, "name": "John"},
{"id": 439, "name": "John"},
{"id": 100, "name": "Kevin"},
{"id": 120, "name": "Max"},
{"id": 439, "name": "John"}
];
Ich muss aus diesem Array extrahieren, die am häufigsten vorkommende Objekt und bauen ein neues Array davon durch die beliebtesten Namen geordnet.
Bisher habe ich versucht, den Weg zu folgen aus diesem Thema Geographie: existiert Underscore.js: Find the most frequently occurring value in an array?
// 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])
});
});
könnte ein Weg, um diesen Code zu verbessern, indem sie ohne die Notwendigkeit, direkt erste Liste Sortierung eine temporäre Liste zu erstellen ?
Alle Objekte in Ihrem Array sind unterschiedlich. Möchten Sie zwei Objekte als gleich betrachten, wenn ihre Eigenschaften 'id' und 'name' übereinstimmen? Nur "id"? – Oriol