When dealing with arrays of objects in JavaScript, it's common to need the index of the object with the maximum value based on a certain property.
Below are the approaches to get the index of the max value in an array of objects:
Table of Content
Using a Loop
This approach iterates through the array of objects using a simple for loop. It keeps track of the index of an object with the maximum value based on the specified property.
Example: The below code uses a for loop to iterate over the array of objects and get the index of the max value.
function indexOfMax(arr, prop) {
let max = -Infinity;
let index = -1;
for (let i = 0; i < arr.length; i++) {
if (arr[i][prop] > max) {
max = arr[i][prop];
index = i;
}
}
return index;
}
const employees = [
{ name: 'John', salary: 50000 },
{ name: 'Alice', salary: 70000 },
{ name: 'Bob', salary: 60000 }
];
const maxSalaryIndex =
indexOfMax(employees, 'salary');
console.log("Index of employee with highest salary:",
maxSalaryIndex);
Output
Index of employee with highest salary: 1
Using Array.reduce() Method
Array.reduce() is a powerful method in JavaScript used to reduce the elements of an array to a single value. It executes a provided function for each value of the array and accumulates a single result.
Syntax:
Array.reduce(callbackFunction, initialValue)Example: The below code explains the use of the reduce() method to get the index of the max value in an array of objects.
function indexOfMax(arr, prop) {
return arr.reduce(
(maxIndex, current, currentIndex, array) => {
return current[prop] >
array[maxIndex][prop] ? currentIndex :
maxIndex;
}, 0);
}
const people = [
{ name: 'Alice', age: 30 },
{ name: 'Bob', age: 40 },
{ name: 'John', age: 35 }
];
const maxAgeIndex =
indexOfMax(people, 'age');
console.log("Index of person with maximum age:",
maxAgeIndex);
Output
Index of person with maximum age: 1