
- Javascript Basics Tutorial
- Javascript - Home
- Javascript - Overview
- Javascript - Syntax
- Javascript - Enabling
- Javascript - Placement
- Javascript - Variables
- Javascript - Operators
- Javascript - If...Else
- Javascript - Switch Case
- Javascript - While Loop
- Javascript - For Loop
- Javascript - For...in
- Javascript - Loop Control
- Javascript - Functions
- Javascript - Events
- Javascript - Cookies
- Javascript - Page Redirect
- Javascript - Dialog Boxes
- Javascript - Void Keyword
- Javascript - Page Printing
- JavaScript Objects
- Javascript - Objects
- Javascript - Number
- Javascript - Boolean
- Javascript - Strings
- Javascript - Arrays
- Javascript - Date
- Javascript - Math
- Javascript - RegExp
- Javascript - HTML DOM
- JavaScript Advanced
- Javascript - Error Handling
- Javascript - Validations
- Javascript - Animation
- Javascript - Multimedia
- Javascript - Debugging
- Javascript - Image Map
- Javascript - Browsers
- JavaScript Useful Resources
- Javascript - Questions And Answers
- Javascript - Quick Guide
- Javascript - Functions
- Javascript - Resources
JavaScript R- eturn Array Item(s) With Largest Score
We have an array of arrays that contains the marks scored by some students in some subjects −
const arr = [ ['Math', 'John', 100], ['Math', 'Jake', 89], ['Math', 'Amy', 93], ['Science', 'Jake', 89], ['Science', 'John', 89], ['Science', 'Amy', 83], ['English', 'John', 82], ['English', 'Amy', 81], ['English', 'Jake', 72] ];
We are required to write a function that takes in this array and retuns an array of object, with one object for each subject and the details about the top scorer of that subject.
Our output should look like −
[ { "Subject": "Math", "Top": [ { Name: "John", Score: 100} ] }, { "Subject": "Science", "Top": [ { Name: "Jake", Score: 89}, { Name: "John", Score: 89} ] }, { "Subject": "English", "Top": [ { Name: "John", Score: 82} ] } ]
Let's write the code for this function −
Example
const arr = [ ['Math', 'John', 100], ['Math', 'Jake', 89], ['Math', 'Amy', 93], ['Science', 'Jake', 89], ['Science', 'John', 89], ['Science', 'Amy', 83], ['English', 'John', 82], ['English', 'Amy', 81], ['English', 'Jake', 72] ]; const groupScore = arr => { return arr.reduce((acc, val, index, array) => { const [sub, name, score] = val; const ind = acc.findIndex(el => el['Subject'] === val[0]); if(ind !== -1){ if(score > acc[ind]["Top"][0]["score"]){ acc[ind]["Top"] = [{ "name": name,"score": score }]; }else if(score === acc[ind]["Top"][0]["score"]){ acc[ind]["Top"].push({ "name": name,"score": score }); } }else{ acc.push({ "Subject": sub,"Top": [{"name": name, "score": score}] }); }; return acc; }, []); }; console.log(JSON.stringify(groupScore(arr), undefined, 4));
Output
The output in the console will be −
const arr = [ ['Math', 'John', 100], ['Math', 'Jake', 89], ['Math', 'Amy', 93], ['Science', 'Jake', 89], ['Science', 'John', 89], ['Science', 'Amy', 83], ['English', 'John', 82], ['English', 'Amy', 81], ['English', 'Jake', 72] ]; const groupScore = arr => { return arr.reduce((acc, val, index, array) => { const [sub, name, score] = val; const ind = acc.findIndex(el => el['Subject'] === val[0]); if(ind !== -1){ if(score > acc[ind]["Top"][0]["score"]){ acc[ind]["Top"] = [{ "name": name,"score": score }]; }else if(score === acc[ind]["Top"][0]["score"]){ acc[ind]["Top"].push({ "name": name,"score": score }); } }else{ acc.push({ "Subject": sub,"Top": [{"name": name, "score": score}] }); }; return acc; }, []); }; console.log(JSON.stringify(groupScore(arr), undefined, 4));[ { "Subject": "Math", "Top": [ { "name": "John","score": 100 } ] }, { "Subject": "Science", "Top": [ { "name": "Jake", "score": 89 }, { "name": "John", "score": 89 } ] }, { "Subject": "English", "Top": [ { "name": "John", "score": 82 } ] } ]
- Related Articles
- Get greatest repetitive item in array JavaScript
- How to splice duplicate item in array JavaScript
- Return the largest array between arrays JavaScript
- Get unique item from two different array in JavaScript
- How to append an item into a JavaScript array?
- Finding the Largest Triple Product Array in JavaScript
- Constructing largest number from an array in JavaScript
- How to sort array by first item in subarray - JavaScript?
- How to remove an item from JavaScript array by value?
- Remove item from a nested array by indices in JavaScript
- Find first duplicate item in array in linear time JavaScript
- Picking the largest elements from multidimensional array in JavaScript
- Assign new value to item in an array if it matches another item without looping in JavaScript?
- Get the first and last item in an array using JavaScript?
- How can I remove a specific item from an array JavaScript?

Advertisements