web-dev-qa-db-fra.com

Comment trouver l'index du tableau avec une valeur?

Dis que j'ai ça

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

Ce qui me donne

[0]100 [1]200 etc.

Existe-t-il un moyen en JavaScript de renvoyer l'index avec la valeur?

C'est à dire. Je veux l'index pour 200 , je suis retourné 1 .

169
jdborg

vous pouvez utiliser indexOf :

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

vous obtiendrez -1 s'il ne parvient pas à trouver une valeur dans le tableau.

278
voigtan

Pour le tableau objects, utilisez 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 partie de ES6 et pris en charge par Chrome, FF, Safari et (Malheureusement seulement) IE Edge

49
Jaqen H'ghar

Utilisez la fonction jQuery jQuery.inArray

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

Voici un autre moyen de rechercher un index de valeur dans un tableau complexe en javascript. En espérant 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 devons sélectionner un objet particulier dans le tableau. Supposons que nous voulions trouver un index d'étudiant nommé Tanmay.

Nous pouvons le faire en parcourant 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'index d'un élément particulier comme ci-dessous,

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

Utilisez indexOf

imageList.indexOf(200)
8
TROODON

que diriez-vous de indexOf

alert(imageList.indexOf(200));
6
gion_13

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
Ryan

Array.indexOf ne fonctionne pas dans certaines versions d'Internet Explorer - il existe de nombreuses façons de le faire ... voir cette question/réponse: Comment puis-je vérifier si un tableau inclut un objet en JavaScript?

5
ManseUK

Il est possible d'utiliser une fonction ES6Array.prototype.findIndex.

MDN dit :

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

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

// expected output: 1

Trouver un index par propriété d'objet.

Pour trouver un index par propriété d'objet:

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

Par exemple, il existe un tel tableau:

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

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

let carIndex = someArray.findIndex( filterCarObj=> 
    filterCarObj['property'] === 'CarNumber');
4
StepUp
// Instead Of 
var index = arr.indexOf(200)

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

Remarque: : includes est une méthode d'instance simple sur le tableau et permet de rechercher facilement si un élément figure dans le tableau (y compris NaN contrairement à indexOf).

0
Harshi Srivastava

Voici mon point de vue, il semble que la plupart des gens ne résolvent pas la question si l'élément existe et supprime les valeurs aléatoires s'il n'existe pas.

Commencez par vérifier si l'élément existe par recherche de son index . S'il existe, supprimez-le par son index à l'aide de la méthode splice

elementPosition = array.indexOf(value);

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