У меня есть JSON в виде:
data = {
"1": {"name": "eve", "type": "sergeant", "age": 22},
"2": {"name": "bob", "type": "sergeant", "age": 33},
"3": {"name": "bats", "type": "private", "age": 90},
"4": {"name": "carol", "type": "captain", "age": 50},
"5": {"name": "noogle", "type": "sergeant", "age": 34},
"6": {"name": "good", "type": "sergeant", "age": 47},
"7": {"name": "alice", "type": "private", "age": 34}
}
Как я могу groupBy
их type
, а затем внутри каждого типа они сортируются по имени в порядке возрастания?
Я пытался сделать это с:
let grouped = _.groupBy(Object.keys(data), function(id) {
return data[id].type;
});
Что даст мне что-то вроде:
{
"sergeant": ["1", "2", "5", "6"],
"private": ["3", "7"],
"captain": ["4"]
}
Но когда я пытаюсь sortBy
, он дает мне тот же объект, что и выше:
_.map(Object.keys(grouped), function(type_name) {
grouped[type_name] = _.sortedBy(grouped[type_name], function(id) {
return data[id].name;
});
});
Как мне отсортировать массив после того, как я сгруппировал объекты вместе? Есть ли способ, которым я могу чисто соединить groupBy
и sortBy
вместе вместо разделения логики, как у меня выше?