如何在数组等可迭代对象中求和特定键的值,而特定键可以嵌套在对象键中。 例: 如何计算键名称为val的键值的总和?
var list = {
val: 5,
child1: {
val : 10,
someotherKey: 'somevalue'
},
child2: {
val : 20,
someotherKey2: 'someothervalue
},
child3: {
someval: {
val: 15,
somekey3: 'somevalue3'
}
}
}
我尝试了for循环 for(在列表中键入){
for(key in list) {
if(key === 'val') {
console.log(key);
}
if(list[key]['val']) {
console.log(key);
}
}
但无法解决。
答案 0 :(得分:0)
使用递归并继续将值加到sum
let sum = 0;
var list = {
val: 5,
child1: {
val : 10,
someotherKey: 'somevalue'
},
child2: {
val : 20,
someotherKey2: 'someothervalue'
},
child3: {
someval: {
val: 15,
somekey3: 'somevalue3'
}
}
}
function addVal(obj){
if(obj.val) {
sum+=obj.val;
}
Object.keys(obj).forEach((key) => {
if(typeof obj[key] === 'object') {
addVal(obj[key])
}
})
}
addVal(list);
console.log(sum)