【问题标题】:[javascript][iterable object] How to sum up the specific key's value in iterable object like array[javascript][iterable object] 如何在数组等可迭代对象中总结特定键的值
【发布时间】:2019-02-03 08:11:56
【问题描述】:

如何在可迭代对象(如数组)中总结特定键的值,而特定键可以嵌套在对象键中。 例子: 如何求键名为val的键值的总和?

var list = {
val: 5,
child1: {
  val : 10,
  someotherKey: 'somevalue'
},
child2: {
  val : 20,
  someotherKey2: 'someothervalue
},
child3: {
  someval: {
  val: 15,
  somekey3: 'somevalue3'
    }
  }
}

我尝试使用 for in 循环 for( 列表中的键) {

 for(key in list) {
  if(key === 'val') {
  console.log(key);
  }
  if(list[key]['val']) {
    console.log(key);
   }
  }

但无法找到解决方案。

【问题讨论】:

  • val 键可以嵌套多深?只是一个级别,还是一个任意数字?
  • 附注您的数据中没有可迭代数组
  • 使用Array.prototype.reduce()reduce() 方法对累加器和数组的每个值应用函数以将其减少为单个值。

标签: javascript arraylist javascript-objects


【解决方案1】:

使用递归并继续将值添加到 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)

【讨论】:

  • 感谢您使用递归的答案。
  • @SiddharthRay ,如果满足,您可以接受作为答案吗?
  • 我没有权限这样做。声望低于15不能投票。对不起。
猜你喜欢
  • 2018-04-06
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2023-02-01
  • 1970-01-01
  • 2020-10-14
相关资源
最近更新 更多