Найти студентов в группе, достойных получать стипендию. Вывести их фамилии
Всем здравствуйте, решил сделать код чтобы он выводил имена студентов которые получили стипендию по ходу обучения и получения оценок, но столкнулся с такой проблемой:
- Не могу понять как сделать несколько оценок (например 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 шт):
У вас два массива и индекс одного связан с другим, следовательно чтобы вывести ФАМИЛИЮ и ОЦЕНКУ, нужно использовать 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);
}
}