angular - 从对象中的每个项目中获取总计
问题描述
我们如何映射和对象并添加某些值然后获取总数,我想映射下面的对象,然后映射对象中的项目。有人有想法吗?
目的:
[
{
"description": "Current Term",
"monthlyRent": 29971.599999999995,
"monthsInPeriod": 41.7,
"rentInPeriod": null
},
{
"description": "Current Term - Rent Adjustment",
"monthlyRent": 31470.180000000004,
"monthsInPeriod": 47.96666666666667,
"rentInPeriod": 1509519.634
}
]
29971.599999999995 + 41.7 = 30,012
31470.180000000004 + 47.96666666666667 = 31,517
结果:应该是
total = 30,012 + 31,517
解决方案
该
map()
方法创建一个新数组,其中填充了对调用数组中的每个元素调用提供的函数的结果。请参阅此处的示例。该
reduce()
方法对数组的每个元素执行用户提供的“reducer”回调函数,传入前一个元素的计算返回值。在数组的所有元素上运行 reducer 的最终结果是单个值。请参阅此处的示例。
通过结合两者,您可以提出如下解决方案:
let arry = [
{
"description": "Current Term",
"monthlyRent": 29971.599999999995,
"monthsInPeriod": 41.7,
"rentInPeriod": null
},
{
"description": "Current Term - Rent Adjustment",
"monthlyRent": 31470.180000000004,
"monthsInPeriod": 47.96666666666667,
"rentInPeriod": 1509519.634
}
];
let total = arry
.map(obj=> obj.monthlyRent + obj.monthsInPeriod)
.reduce((value, previousValue) => previousValue + value);
另一种解决方案是对每个使用简单:
let total2:number=0;
for (let i = 0; i < this.arry.length; i++) {
let val = this.arry[i].monthlyRent + this.arry[i].monthsInPeriod;
total2 = total2+val
}
请在此处找到附加的StackBlitz。
推荐阅读
- bash - 如何在 WSL 中显示当前分支(我使用 Vscode)
- javascript - 如何在js中检查多个类名
- python - 为 json 中的实例创建对象
- owin - 请求访问令牌时 Owin 未通过身份验证
- key - 在有序字典中添加和更改键/值而不发生变异
- architecture - 为什么不采用单片事件驱动架构?
- algorithm - 算法 - 确定缓存大小
- sql - 自定义域作为无符号类型
- android - Sharepreference 存储 int 值
- r - 我如何计算有多少 >x 和
我想计算我的数据中有多少>x和<y条件。
这是一个简单的例子。
假设我有如下数据。
data <- read.csv("data.csv") data X1 X2 X3 X4 X5 X6 X7 X8