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.
-
6Excellent answer here -> stackoverflow.com/questions/237104/…Manse– Manse2011年09月08日 10:49:39 +00:00Commented Sep 8, 2011 at 10:49
-
developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…Matt Ball– Matt Ball2011年09月08日 10:52:42 +00:00Commented Sep 8, 2011 at 10:52
12 Answers 12
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.
5 Comments
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
2 Comments
Use jQuery's function jQuery.inArray
jQuery.inArray( value, array [, fromIndex ] )
(or) $.inArray( value, array [, fromIndex ] )
2 Comments
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);
Comments
Use indexOf
imageList.indexOf(200)
Comments
how about indexOf
?
alert(imageList.indexOf(200));
Comments
Array.indexOf
doesnt work in some versions of internet explorer - there are lots of alternative ways of doing it though ... see this question / answer : How do I check if an array includes an object in JavaScript?
2 Comments
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);
Comments
It is possible to use a ES6
function Array.prototype.findIndex
.
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');
Comments
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);
}
}
Comments
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);
}
Comments
// 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)