angular - 计算数组的值并将它们添加到对象(TypeScript)
问题描述
我有这个对象,我想知道每个用户有多少项目并将它们添加到一个新对象(用户是动态的)
[{
"user": "user1"
}, {
"user": "user1"
}, {
"user": "user2"
}, {
"user": "user3"
}]
例如,使用前一个对象,您应该像这样创建一个新对象:
[{"user":"user1", "count": 2},{"user":"user2","count":1},{"user":"user3","count":1}]
我试过一个过滤器,做这样的事情
const count = (array, user) => {
return array.filter(n => n.user=== user).length;
};
但是新对象是由 harcode 创建的
非常感谢您的帮助
解决方案
我会在Array.prototype.reduce方法的帮助下做到这一点:
const arr = [
{
"user": "user1"
}, {
"user": "user1"
}, {
"user": "user2"
}, {
"user": "user3"
}
];
const usersByCountMap = arr.reduce((acc, cur) => {
acc[cur.user] = (acc[cur.user] || 0) + 1;
return acc;
}, {});
const usersByCountArr = Object.keys(usersByCountMap).map(key => ({ user: key, count: usersByCountMap[key ]}));
console.log(usersByCountArr);
推荐阅读
- r - 如何忽略 rbind 函数中缺少的工作表?
- php - Mailgun API 在 Laravel 8.54 中静默失败
- java - java - 如何在方向更改时维护Java中列表的状态
- android - React native Android Native Modules - MantraMFS100 指纹读取器
- javascript - 无限滚动失败,Angular
- r - 在 R 中按组级别过滤行
- firebase - 在现有项目上安装 Pod 导致 nanopb 错误(Xcode13 + 工具链到 swift 5.4)
- swift - 如何在 UIkit 中添加 SwiftUI 对象
- node.js - npm:如果包包含某些依赖项,则阻止安装
- wso2 - 在 WSO2 API MANAGER 4.0 中使用 Cognito 作为联合身份验证器