"I need to filter names who's each points in array above 75"
Looking at the content of OP, I believe that's incorrect. It would make more sense if the desired output would be only the objects (aka candidates) that have an average of points at or above 75 not a total of 75 (although not explained very well). So the plan of attack would be:
Get each of the candidates with a for...of loop:
for (const candidate of candidates) {...
Get each of the candidate's points (candidate.points) and get their sums using .reduce() (note: the return goes to a new property called .total). Then take that total and divide by the number of grades found in points array (it's candidate.points.length = 4):
candidate.total = candidate.points.reduce((sum, cur) => sum + cur, 0);
candidate.gpa = Math.floor(candidate.total / candidate.points.length);
Once candidate.gpa is established, .filter() will determine if it is equal to or greater than 75.
return candidates.filter(candidate => candidate.gpa >= 75);
const candidates = [{
'name': 'Blake Hodges',
'points': [76, 98, 88, 84]
}, {
'name': 'James Anderson',
'points': [0, 98, 12, 13]
}, {
'name': 'Zer0 0ne',
'points': [100, 88, 91, 84]
}, {
'name': 'Ronald McDonald',
'points': [72, 51, 8, 89]
}];
const selected = candidates => {
for (const candidate of candidates) {
candidate.total = candidate.points.reduce((sum, cur) => sum + cur, 0);
candidate.gpa = Math.floor(candidate.total / candidate.points.length);
}
return candidates.filter(candidate => candidate.gpa >= 75);
};
console.log(selected(candidates));
forloop, just useconst filtered = candidatesList.filter( c => c.points.every( p => p > 75 ) );candidates's array's objects don't have identical keys. Keys in JS are case-sensitive, butPointsandpointsare different. You need to fix that.