[javascript] [可迭代对象]如何总结可迭代对象(如数组)中特定键的值

时间:2018-08-28 16:08:45

标签: javascript arraylist javascript-objects

如何在数组等可迭代对象中求和特定键的值,而特定键可以嵌套在对象键中。 例: 如何计算键名称为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);
   }
  }

但无法解决。

1 个答案:

答案 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)