Есть ли способ суммировать все заданные ключи в массиве? JS - PullRequest
0 голосов
/ 25 октября 2019

Итак, я недавно узнал, что вы можете использовать объекты в качестве типа данных в массиве. Поэтому мне нужно пройтись по этому массиву и добавить каждый возраст, а затем разделить сумму возраста на длину массива, чтобы получить средний возраст всех людей. Дело в том, что я не понимаю, как бы вы назвали данный ключ.

Я понимаю, что для вызова первого объекта вы должны написать "people [0]", но я понятия не имею, как получить ключ от этого объекта и передать его функции.

let people=[ {name:'Don', Age:23},
             {name:'Ron', Age:21}, 
             {name:'Juan', Age:20}
             ]

// return /people.length

Ответы [ 4 ]

3 голосов
/ 25 октября 2019

надеюсь, что это может помочь.

let people=[ {name:'Don', Age:23},
         {name:'Ron', Age:21}, 
         {name:'Juan', Age:20}
       ];

var totalPeople = people.length;
var totalAge = 0
var averageAge = 0;

for (var key in people) {
  // skip loop if the property is from prototype
  if (!people.hasOwnProperty(key)) continue;

  var obj = people[key];
  for (var prop in obj) {
    // skip loop if the property is from prototype
    if (!obj.hasOwnProperty(prop)) continue;

    if(prop == 'Age') {
      totalAge += obj[prop];
    }
  }
}

averageAge = totalAge / totalPeople;
alert(averageAge);
1 голос
/ 25 октября 2019

Если вы хотите добавить возраст, а затем разделить его на длину массива, чтобы получить среднее значение, в этом случае вы можете просто использовать Array.map ()

   let people=[ 
             {name:'Don', Age:23},
             {name:'Ron', Age:21}, 
             {name:'Juan', Age:20}]
    //Sum
    let sum = 0;
    //Map
    people.map((value)=> { 
     sum += value.Age; 
    })
    //Average Result
    let avg_Age = sum / people.length
    console.log('Average Age', avg_Age)
0 голосов
/ 25 октября 2019

Вы можете использовать приведенный ниже код для обхода объекта и ключей доступа: let sum = 0;

for(let i=1;i<=people.length;i++) {
sum = sum + people[i-1].Age;
}
console.log(sum/people.length);

//output
21.333333333333332

Вы также можете использовать метод foreach для обхода массива. https://www.w3schools.com/jsref/jsref_obj_array.asp Перейдите по этой ссылке, здесь вы найдете все методы для манипулирования массивами / объектами.

0 голосов
/ 25 октября 2019

Чтобы получить ключи, звоните Object.keys(people[0])

Пожалуйста, посмотрите Object.keys метод https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

...