Comment trouver l'index de tableau avec une valeur?

Dire que j'ai eu ce

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

qui me donne

[0]100 [1]200 etc.

y a-t-il un moyen en JavaScript de retourner l'index avec la valeur?

i. e. Je veux l'index de 200 , je suis retourné 1 .

159
demandé sur TylerH 2011-09-08 14:47:46

11 réponses

vous pouvez utiliser indexOf :

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

vous obtiendrez -1 si elle ne trouve pas de valeur dans le tableau.

260
répondu voigtan 2014-07-15 13:39:45

pour objects array utiliser map avec 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);

dans les navigateurs modernes, vous pouvez utiliser findIndex :

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

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

console.log(index);

Sa part de l'ES6 et , soutenu par Chrome, FF, Safari et (Malheureusement uniquement) IE bord

45
répondu Jaqen H'ghar 2016-07-31 01:05:17

utiliser la fonction de jQuery jQuery.inArray

jQuery.inArray( value, array [, fromIndex ] )
(or) $.inArray( value, array [, fromIndex ] )
16
répondu Simon_Weaver 2013-03-10 04:20:34

Voici une autre façon de trouver l'index des valeurs dans le tableau complexe en javascript. L'espoir d'aider quelqu'un, en effet. Supposons que nous ayons un tableau JavaScript comme suit,

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

Maintenant, si nous avons une obligation de sélectionner un objet dans le tableau. Supposons que nous voulons trouver l'indice de l'étudiant avec le nom Tanmay.

nous pouvons le faire en itérant à travers le tableau et en comparant la valeur à la clé donnée.

function functiontofindIndexByKeyValue(arraytosearch, key, valuetosearch) {

    for (var i = 0; i < arraytosearch.length; i++) {

    if (arraytosearch[i][key] == valuetosearch) {
    return i;
    }
    }
    return null;
    }

Vous pouvez utiliser la fonction pour trouver l'indice d'un élément particulier comme ci-dessous,

var index = functiontofindIndexByKeyValue(studentsArray, "name", "tanmay");
alert(index);
12
répondu Ravinder Singh Bhanwar 2015-08-12 12:51:19

Use index de

imageList.indexOf(200)
8
répondu TROODON 2011-09-08 10:50:55

et indexOf ?

alert(imageList.indexOf(200));
6
répondu gion_13 2011-09-08 10:51:51

Array.indexOf ne fonctionne pas dans certaines versions d'internet explorer - il y a beaucoup d'autres façons de le faire bien ... voir cette question / réponse : Comment puis-je vérifier si un tableau inclut un objet en JavaScript?

5
répondu ManseUK 2017-05-23 12:02:48

quand les listes ne sont pas très longues, c'est la meilleure façon que je connaisse:

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);
5
répondu Ryan 2015-03-21 07:59:42

il est possible d'utiliser une ES6 fonction Array.prototype.findIndex .

MDN dit :

la méthode findIndex() renvoie l'index de le premier élément dans le tableau qui satisfait la fonction de test fournie. Sinon -1 est retourné.

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

// expected output: 1

trouver un index par bien d'objet.

pour trouver un index par bien d'objet:

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

par exemple, il y a un tel tableau:

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

puis, le code pour trouver un index de la propriété nécessaire ressemble à cela:

let carIndex = someArray.findIndex( filterCarObj=> 
    filterCarObj['property'] === 'CarNumber');
4
répondu StepUp 2018-01-02 18:22:52
// Instead Of 
var index = arr.indexOf(200)

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

prendre Note : Comprend la fonction est une simple méthode d'instance sur le tableau et permet de trouver facilement si un élément est dans le tableau(y compris NaN contrairement à indexOf)

0
répondu Harshi Srivastava 2018-04-10 10:18:03

Voici mon point de vue sur elle, semble comme la plupart des gens solutions ne vérifient pas si l'élément existe et il supprime les valeurs aléatoires si elle n'existe pas.

vérifier D'abord si l'élément existe par chercher son index . S'il existe, supprimez-le par son index en utilisant la splice method

elementPosition = array.indexOf(value);

if(elementPosition != -1) {
  array.splice(elementPosition, 1);
}
0
répondu RickS 2018-09-24 17:35:37