gpt4 book ai didi

javascript - 具有深度的数组的总计

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:10 24 4
gpt4 key购买 nike

当然,我已经尝试搜索具体示例,或者搜索示例来接近答案。我正在尝试获取多深度对象数组的总和。

我的数据结构如下:

[
{
"values":[
{
"values":[
{
"value":{
"value":"51214.35"
},
}
],
}
],
},
{
"values":[
{
"values":[
{
"value":{
"value":"10632.00"
},
},
{
"value":{
"value":"15000.00"
},
}
],
}
],
}
]

我希望它们成为每个对象的属性,该对象具有更深入的所有值属性的总和。

例如:

[
{
"total":"51214.35",
"values":[
{
"total":"51214.35",
"values":[
{
"total":"51214.35",
"value":{
"value":"51214.35"
},
}
],
}
],
},
{
"total":"25632.00",
"values":[
{
"total" : "25632.00",
"values":[
{
"total": "10632.00",
"value":{
"value":"10632.00"
},
},
{
"total": "15000.00",
"value":{
"value":"15000.00"
},
}
],
}
],
}
]

我知道递归可能会发挥作用,因为有一个未知的深度......

最佳答案

您可以创建一个接受对象的函数,如果它有一个,则将其设置为它的totals 属性。如果它不对数组 values 中的每个项目调用相同函数的总数求和。

您需要小心求和,因为您将字符串而不是数字作为值,否则它是非常简单的递归。

let arr = [{"values":[{"values":[{"value":{"value":"51214.35"},}],}],},{"values":[{"values":[{"value":{"value":"10632.00"},},{"value":{"value":"15000.00"},}],}],}]

function setTotals(obj){
obj.totals = obj.hasOwnProperty('value')
? parseFloat(obj.value.value)
: obj.values.reduce((sum, item) => sum + setTotals(item), 0)
return obj.totals
}
arr.forEach(item => setTotals(item))
console.log(arr)

关于javascript - 具有深度的数组的总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53603333/

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