How to find the array index with a value?

JavascriptArraysIndexof

Javascript Problem Overview


Say I've got this

imageList = [100,200,300,400,500];

Which gives me

[0]100 [1]200 etc.

Is there any way in JavaScript to return the index with the value?

I.e. I want the index for 200, I get returned 1.

Javascript Solutions


Solution 1 - Javascript

You can use indexOf:

var imageList = [100,200,300,400,500];
var index = imageList.indexOf(200); // 1

You will get -1 if it cannot find a value in the array.

Solution 2 - Javascript

For objects array use map with indexOf:

var imageList = [
   {value: 100},
   {value: 200},
   {value: 300},
   {value: 400},
   {value: 500}
];

var index = imageList.map(function (img) { return img.value; }).indexOf(200);

console.log(index);


In modern browsers you can use findIndex:

var imageList = [
   {value: 100},
   {value: 200},
   {value: 300},
   {value: 400},
   {value: 500}
];

var index = imageList.findIndex(img => img.value === 200);

console.log(index);

Its part of ES6 and supported by Chrome, FF, Safari and Edge

Solution 3 - Javascript

Use jQuery's function jQuery.inArray

jQuery.inArray( value, array [, fromIndex ] )
(or) $.inArray( value, array [, fromIndex ] )

Solution 4 - Javascript

Here is an another way find value index in complex array in javascript. Hope help somebody indeed. Let us assume we have a JavaScript array as following,

var studentsArray =
     [    {    "rollnumber": 1,    "name": "dj",    "subject": "physics"   },   {   "rollnumber": 2,  "name": "tanmay",  "subject": "biology"   },  {   "rollnumber": 3,   "name": "amit",   "subject": "chemistry"   },  ];

Now if we have a requirement to select a particular object in the array. Let us assume that we want to find index of student with name Tanmay.

We can do that by iterating through the array and comparing value at the given key.

function functiontofindIndexByKeyValue(arraytosearch, key, valuetosearch) {
     
    for (var i = 0; i < arraytosearch.length; i++) {
     
    if (arraytosearch[i][key] == valuetosearch) {
    return i;
    }
    }
    return null;
    }

You can use the function to find index of a particular element as below,

var index = functiontofindIndexByKeyValue(studentsArray, "name", "tanmay");
alert(index);

Solution 5 - Javascript

Use indexOf

imageList.indexOf(200)

Solution 6 - Javascript

how about indexOf ?

alert(imageList.indexOf(200));

Solution 7 - Javascript

Array.indexOf doesnt work in some versions of internet explorer - there are lots of alternative ways of doing it though ... see this question / answer : https://stackoverflow.com/questions/237104/array-containsobj-in-javascript

Solution 8 - Javascript

When the lists aren't extremely long, this is the best way I know:

function getIndex(val) {
    for (var i = 0; i < imageList.length; i++) {
        if (imageList[i] === val) {
            return i;
        }
    }
}

var imageList = [100, 200, 300, 400, 500];
var index = getIndex(200);

Solution 9 - Javascript

It is possible to use a ES6 function Array.prototype.findIndex.

MDN says: >The findIndex() method returns the index of the first element in the array that satisfies the provided testing function. Otherwise -1 is returned.

var fooArray = [5, 10, 15, 20, 25];
console.log(fooArray.findIndex(num=> { return num > 5; }));
    
// expected output: 1

Find an index by object property.

To find an index by object property:

yourArray.findIndex(obj => obj['propertyName'] === yourValue)

For example, there is a such array:

let someArray = [
    { property: 'OutDate' },
    { property: 'BeginDate'},
    { property: 'CarNumber' },
    { property: 'FirstName'}
];
	

Then, code to find an index of necessary property looks like that:

let carIndex = someArray.findIndex( filterCarObj=> 
    filterCarObj['property'] === 'CarNumber');

Solution 10 - Javascript

In a multidimensional array.


Reference array:

var array = [
    { ID: '100' },
    { ID: '200' },
    { ID: '300' },
    { ID: '400' },
    { ID: '500' }
];

Using filter and indexOf:

var index = array.indexOf(array.filter(function(item) { return item.ID == '200' })[0]);

Looping through each item in the array using indexOf:

for (var i = 0; i < array.length; i++) {
    var item = array[i];
    if (item.ID == '200') { 
        var index = array.indexOf(item);
    }
}

Solution 11 - Javascript

Here is my take on it, seems like most peoples solutions don't check if the item exists and it removes random values if it does not exist.

First check if the element exists by looking for it's index. If it does exist, remove it by its index using the splice method

elementPosition = array.indexOf(value);

if(elementPosition != -1) {
  array.splice(elementPosition, 1);
}

Solution 12 - Javascript

// Instead Of 
var index = arr.indexOf(200)

// Use 
var index = arr.includes(200);

Please Note: Includes function is a simple instance method on the array and helps to easily find if an item is in the array(including NaN unlike indexOf)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionjoedborgView Question on Stackoverflow
Solution 1 - JavascriptvoigtanView Answer on Stackoverflow
Solution 2 - JavascriptJaqen H'gharView Answer on Stackoverflow
Solution 3 - JavascriptSimon_WeaverView Answer on Stackoverflow
Solution 4 - JavascriptRavinder Singh BhanwarView Answer on Stackoverflow
Solution 5 - JavascriptTROODONView Answer on Stackoverflow
Solution 6 - Javascriptgion_13View Answer on Stackoverflow
Solution 7 - JavascriptManseView Answer on Stackoverflow
Solution 8 - JavascriptRyanView Answer on Stackoverflow
Solution 9 - JavascriptStepUpView Answer on Stackoverflow
Solution 10 - JavascriptSoulesteView Answer on Stackoverflow
Solution 11 - JavascriptricksView Answer on Stackoverflow
Solution 12 - JavascriptHarshi SrivastavaView Answer on Stackoverflow