每个项目都有id,parent_id和值,
id:1,
name:A,
value:0
|
----id:2
parent:1,
name:B,
value : 10
|
------id:3,
parent:2,
name :C,
value : 12
|
------id:4,
parent:3,
name :D,
value : 14
如何按父ID对值进行求和, 从最底层的孩子到最高的父母,
所以我可以得到A:36的价值, B值:36, 值C:26,
谢谢,
答案 0 :(得分:0)
您可以使用解构赋值来获取对象的嵌套属性,并将检索到的值按顺序分配给数组。从数组一次使用一个循环到.splice()
两个元素来创建具有A:36,B:36,C:26
对的对象,将对象推回到数组。
const data = {id:1, name:"A", value:0
, parent:{id:2, name: "B", value: 10
, parent:{id:3, name: "C", value: 12
, parent:{id:4, name: "D", value: 14}
}
}
};
let res = [];
({name:res[res.length], value:res[res.length]
, parent:{
name:res[res.length], value:res[res.length]
, parent:{
name:res[res.length], value:res[res.length]
, parent:{
name:res[res.length], value:res[res.length]}}}} = data);
let k = res.length / 2;
while (res.length > k) {
let [key, prop] = res.splice(0, 2);
res.push({[key]:prop
+ (res[1] && !isNaN(res[1]) && res[1] || 0)
+ (res[3] && !isNaN(res[3]) && res[3] || 0)
+ (res[5] && !isNaN(res[5]) && res[5] || 0)
});
}
// A : 36, value of B : 36, value of C : 26
console.log(res)