У меня есть loda sh, чтобы сгруппировать мой объект по userId, но я знаю, что я хочу снова сгруппировать его по значениям имен, которые равны.
Так, например, у меня есть данные:
"data": [
{
"name": "Red",
"userId": "batman"
},
{
"name": "Red",
"userId": "batman"
},
{
"name": "Blue",
"userId": "batman"
}
]
Я хотел бы что-то вроде:
[
{userId: "Batman",
name: {
"red": 2
"blue": 1
}}
]
В основном, чтобы помочь мне дать представление, из которого я могу произвести что-то вроде:
Red - 2 - batman
Blue - 1 - batman
У меня есть это до сих пор
console.log(
chain(data)
.groupBy("userId")
.map((value, key) => ({ userId: key, name: value }))
.value()
);
Но это дает мне группу только по идентификатору пользователя.
Буду признателен за любые идеи / помощь.
Спасибо
ОБНОВЛЕНИЕ - решено с помощью также требуется вторая функция:
function filterArr(data: any, key: any){
return data.reduce( (result: any, current: any) => {
if(!result[current[key]]){
result[current[key]] = 1;
} else {
result[current[key]] += 1;
}
return result;
}, {})
}
с:
console.log(
chain(data)
.groupBy("userId")
.map((value, key) => ({ userId: key, name: filterArr(value, "name") }))
.value()
);