gpt4 book ai didi

javascript - 迭代对象数组以获取存在的数量之和

转载 作者:行者123 更新时间:2023-11-28 13:21:52 26 4
gpt4 key购买 nike

我有一个对象数组。所有这些对象不一定具有共同的属性。

如果数组中的某些对象确实具有公共(public)属性,我需要找到它们的总和。

[{"taxAmount":572.26,"totalAmount":2004,"totalDiscount":0,"totalItems":12,"gTotal":2576.2599999999998,"count":4,"deployment":{"_id":"554c92f979d26026307a5a9b","name":"Punjabi Bagh"}},
{"taxAmount":304.9,"totalAmount":1111,"totalDiscount":0,"totalItems":9,"gTotal":1415.8999999999999,"count":2,"deployment{"_id":"554c930579d26026307a5a9c","name":"Pitampura"}},
{"deployment":{"_id":"554c930c79d26026307a5a9d","name":"Model Town"}},
{"deployment":{"_id":"554c945079d26026307a5cae","name":"Dwarka"}},
{"deployment":{"_id":"554cd66c0a40ccd2416e38e7","name":"Green Park"}}]

在上面的示例中,我需要添加计算 TaxAmounttotalAmount 的单独总和。

此外,我还需要具有 totalAmount 属性的对象数量。

我怎样才能用 JavaScript 解决这个问题?

此外,是否有一种快速方法来检查对象是否具有除了我们到目前为止迭代的属性之外的任何额外属性?

最佳答案

您走在正确的道路上 - reduce 是一种实现方法(您还需要 Object.keys 来循环访问每个对象的属性

内嵌注释 - 请注意,这会在计数/添加之前执行(简单的)isNumber 检查

var data = [{"taxAmount":572.26,"totalAmount":2004,"totalDiscount":0,"totalItems":12,"gTotal":2576.2599999999998,"count":4,"deployment":{"_id":"554c92f979d26026307a5a9b","name":"Punjabi Bagh"}},
{"taxAmount":304.9,"totalAmount":1111,"totalDiscount":0,"totalItems":9,"gTotal":1415.8999999999999,"count":2,"deployment":{_id:"554c930579d26026307a5a9c","name":"Pitampura"}},
{"deployment":{"_id":"554c930c79d26026307a5a9d","name":"Model Town"}},
{"deployment":{"_id":"554c945079d26026307a5cae","name":"Dwarka"}},
{ "deployment": { "_id": "554cd66c0a40ccd2416e38e7", "name": "Green Park" } }]

var result = data.reduce(function (a, b) {
// loop through the properties
Object.keys(b).forEach(function (key) {
// check if it's a number
if (!isNaN(parseFloat(b[key]))) {
// get the running count / sum for this key or initialize a new one
a[key] = a[key] || { sum: 0, count: 0 }
a[key].sum += Number(b[key]);
a[key].count++;
}
})

return a;
}, {})

console.log(result)

关于javascript - 迭代对象数组以获取存在的数量之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32331082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com