Найти студентов в группе, достойных получать стипендию. Вывести их фамилии

Всем здравствуйте, решил сделать код чтобы он выводил имена студентов которые получили стипендию по ходу обучения и получения оценок, но столкнулся с такой проблемой:
- Не могу понять как сделать несколько оценок (например 5 оценок) у каждого студента. И я понимаю что нужно ещё сделать так чтобы он считал на стипендию.

var names = ['Ivanov', 'Petrov', 'Sidorov', 'Nikolaev', 'Fedorov'];
var assessment = [5, 3, 4, 2, 5];
for (var i = 0; i < assessment.length; i++) {
  if (assessment[i] >= 5) {
    alert(names[i], );
  }
};


Ответы (2 шт):

Автор решения: De.Minov

У вас два массива и индекс одного связан с другим, следовательно чтобы вывести ФАМИЛИЮ и ОЦЕНКУ, нужно использовать names[i] и assessment[i] соответственно.

var names = ['Ivanov', 'Petrov', 'Sidorov', 'Nikolaev', 'Fedorov'];
var assessment = [5, 3, 4, 2, 5];

for (var i = 0; i < assessment.length; i++) {
  if (assessment[i] >= 5) {
    console.log(names[i], assessment[i])
  }
};


А ещё лучше, хранить данные в объекте:

var students = [
  {
    surname: 'Ivanov',
    assessment: 5,
  },
  {
    surname: 'Petrov',
    assessment: 3,
  },
  {
    surname: 'Sidorov',
    assessment: 4,
  },
  {
    surname: 'Nikolaev',
    assessment: 2,
  },
  {
    surname: 'Fedorov',
    assessment: 5,
  }
];

for(var i in students) {
  var item = students[i];
  if(item.assessment >= 5) {
    console.log(item.surname, item.assessment);
  }
};

Для подсчёта оценок и вывода среднеарифметического значения, в assessment передаёте массив оценок, потом складываете их методом .reduce() и делите на длину массива:

var students = [
  {
    surname: 'Ivanov',
    assessment: [5,5,5,4,5],
  },
  {
    surname: 'Petrov',
    assessment: [5,3,2,4,3,4],
  },
  {
    surname: 'Sidorov',
    assessment: [4,3,3,2,3,5],
  },
  {
    surname: 'Nikolaev',
    assessment: [2,3,2,2],
  },
  {
    surname: 'Fedorov',
    assessment: [5],
  }
];

for(var i in students) {
  var item = students[i];
  item.average = item.assessment.reduce(function(acc, cur) {
    return acc + cur;
  }, 0) / item.assessment.length;
  if(item.average >= 4.5) {
    console.log(`${item.surname} - ${Math.floor(item.average * 100) / 100} (${item.assessment.join(',')})`);
  }
};

→ Ссылка
Автор решения: Виктор

Так можно:

var students = { 
'Ivanov':[5,4,3,2,1], 
'Petrov': [3,2],
'Sidorov':[4],
'Nikolaev':[2,5],
'Fedorov':[5]
};
for (const [key, value] of Object.entries(students)) {
  var summ = value.reduce((partialSum, a) => partialSum + a, 0)/value.length;
  if (summ >= 5) {
    alert(key);
  }
}

→ Ссылка