javascript indexof - Comment trouver l'index de tableau avec une valeur?




find object (9)

Dire que j'ai ça

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

Ce qui me donne

[0]100 [1]200 etc.

Est-il possible en JavaScript de retourner l'index avec la valeur?

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


Answers

Pour le tableau d'objets, 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 soutenu par Chrome, FF, Safari et (malheureusement seulement) bord IE


Utilisez la fonction de jQuery jQuery.inArray

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

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

findIndex :

La méthode findIndex() renvoie l'index du 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 à ça:

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

que diriez-vous d' indexOf ?

alert(imageList.indexOf(200));

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

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

Veuillez noter : La fonction Includes est une méthode d'instance simple sur le tableau et aide à trouver facilement si un élément est dans le tableau (y compris NaN contrairement à indexOf)



Voici une autre façon de trouver l'indice de valeur dans un tableau complexe en javascript. J'espère 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 besoin de sélectionner un objet particulier dans le tableau. Supposons que nous voulons trouver l'index de l'étudiant avec le nom Tanmay.

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

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

Utiliser indexOf

imageList.indexOf(200)

Comme vous utilisez déjà jQuery, vous pouvez utiliser la fonction grep qui est destinée à la recherche dans un tableau:

var result = $.grep(myArray, function(e){ return e.id == id; });

Le résultat est un tableau avec les éléments trouvés. Si vous savez que l'objet est toujours là et qu'il ne se produit qu'une seule fois, vous pouvez simplement utiliser le result[0].foo pour obtenir la valeur. Sinon, vous devriez vérifier la longueur du tableau résultant. Exemple:

if (result.length == 0) {
  // not found
} else if (result.length == 1) {
  // access the foo property using result[0].foo
} else {
  // multiple items found
}






javascript arrays indexof