JavaScript Program to Find Index of an Object by Key and Value in an Array
Finding the index of an object by key and value in an array involves iterating through the array and checking each object’s key-value pair. Once a match is found, its index is returned. If no match is found, -1 is returned.
Example:
arr = [ { course: "DevOps", price: 11999 }, { course: "GATE", price: 6999 }, { course: "ML & DS", price: 5999 }, { course: "DSA", price: 3999 }, ]; Input: key = "course"; value = "DSA"; Output: 3 Explanation: name : DSA object is at 3rd index in the array.
Table of Content
- Using JavaScript for Loop and If Condition
- Using findIndex() Method
- Using Array map() and indexOf Methods
- Using Array some() Method
- Using Array.reduce()
So let’s see each of the approaches with its implementation.
Approach 1: Using JavaScript for Loop and If Condition
In this approach, we are using the for loop and if condition to get the index of the object. Here, firstly we take the input of key and value and then we iterate over the array, by using the if condition we are checking if the key and value are been matched in the array. For example. {course: DSA} is matched, then we return its index and print the output, else if no match is found then -1 is printed.
Syntax
for (statement 1; statement 2; statement 3) {
code here...
}
Example: In this example, we will find an index of an object by key and value in a JavaScript array using Using for Loop and if Condition.
let objArray = [
{ course: "DevOps", price: 11999 },
{ course: "GATE", price: 6999 },
{ course: "ML & DS", price: 5999 },
{ course: "DSA", price: 3999 },
];
let k = "course";
let val = "DSA";
let objIndex = -1;
for (let i = 0; i < objArray.length; i++) {
if (objArray[i][k] === val) {
objIndex = i;
break;
}
}
console.log(objIndex);
Output
3
Approach 2: Using findIndex() Method
In this approach, we use the findIndex() method. As this method is searching for the object in the array and it returns the index of the first matched object. Here, we are giving the key and the value and checking for the match.
Syntax
array.findIndex(callback(element[, index[, array]])[, thisArg])
Example: In this example, we will find an index of an object by key and value in a JavaScript array using the findIndex() Method.
let objArray = [
{ course: "DevOps", price: 11999 },
{ course: "GATE", price: 6999 },
{ course: "ML & DS", price: 5999 },
{ course: "DSA", price: 3999 },
];
let k = "course";
let val = "DSA";
let objIndex = objArray.findIndex(
(temp) => temp[k] === val
);
console.log(objIndex);
Output
3
Approach 3: Using Array map() and indexOf Methods
In this approach, we are using the map() method to go through the input elements and we are giving the match condtion of key and value. There is indexOf() method, which returns the index of the first matched elements. We are storing this index in the objIndex variable and printing it using log function.
Syntax
map((element, index, array) => { /* … */ })
Example: In this example, we will find the index of an object by key and value in a JavaScript array using Using map() and indexOf Methods
let objArray = [
{ course: "DevOps", price: 11999 },
{ course: "GATE", price: 6999 },
{ course: "ML & DS", price: 5999 },
{ course: "DSA", price: 3999 },
];
let k = "course";
let val = "GATE";
let objIndex = objArray.map((temp) => temp[k]).indexOf(val);
console.log(objIndex);
Output
1
Approach 4: Using Array some() Method
In this method, we use the some() method that is used to check whether one of the object from the array satisfies the condtion specified in the argument method. Here, we are checking the condtion of key==value, and then we are returning the index of that value and storing in the varibale and printing using console.log() method.
Syntax
array.some(callback(element,index,array),thisArg)
Example: In this example, we will find an index of an object by key and value in a JavaScript array Using some() Method
let objArray = [
{ course: "DevOps", price: 11999 },
{ course: "GATE", price: 6999 },
{ course: "ML & DS", price: 5999 },
{ course: "DSA", price: 3999 },
];
let k = "course";
let val = "DevOps";
let objIndex;
objArray.some((key, value) => {
if (key.course == val) {
objIndex = value;
return true;
}
});
console.log(objIndex);
Output
0
Approach 5: Using Array.reduce()
Using Array.reduce(), the function iterates through the array, accumulating an index where the object’s specified key matches the given value. If found, it returns the index; otherwise, it returns -1, indicating the object was not found.
Syntax:
array.reduce( function(total, currentValue, currentIndex, arr),
initialValue )
Example: In this example The findIndexByKeyValue function searches an array of objects for a specific key-value pair and returns the index of the first matching object.
function findIndexByKeyValue(arr, key, value) {
return arr.reduce((index, obj, i) => (obj[key] === value ? i : index), -1);
}
let array = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }];
let index = findIndexByKeyValue(array, 'name', 'Bob');
console.log(index); // 1
Output
1