[javascript] [итерируемый объект] Как суммировать значение конкретного ключа в итерируемом объекте, таком как массив - PullRequest
0 голосов
/ 28 августа 2018

Как суммировать значение определенного ключа в итерируемом объекте, таком как массив, в то время как конкретный ключ может быть вложен в ключ объекта. пример: как я могу сделать сумму значения ключа, имя ключа которого является val?

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

Я пытался с помощью в цикле, как для (введите в списке) {

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

но не смог найти решение.

1 Ответ

0 голосов
/ 28 августа 2018

Используйте рекурсию и продолжайте добавлять значение к сумме

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...