Je suis confus entre la différence entre les deux fonctions indexOf et find Index dans un tableau.
La documentation dit
findIndex - Renvoie l'index du premier élément du tableau où prédicat est vrai, et -1 dans le cas contraire.
et
indexOf - Renvoie l'index de la première occurrence d'une valeur dans un tableau.
javascript
Rahul Singh
la source
la source
Réponses:
La principale différence réside dans les paramètres de ces fonctions:
Array.prototype.indexOf()
attend une valeur comme premier paramètre. Cela en fait un bon choix pour trouver l'index dans des tableaux de types primitifs (comme une chaîne, un nombre ou un booléen).Array.prototype.findIndex()
attend un rappel comme premier paramètre. Utilisez ceci si vous avez besoin de l'index dans des tableaux avec des types non primitifs (par exemple, des objets) ou si votre condition de recherche est plus complexe qu'une simple valeur.Voir les liens pour des exemples des deux cas.
la source
indexOf
cela fonctionnera pour trouver des objets. Il est important de faire la distinction qu'il accepte un seul objet, pas seulement une valeur, et compare par égalité et non par valeur. Pour la documentation de Mozilla:indexOf() compares searchElement to elements of the Array using strict equality (the same method used by the === or triple-equals operator).
veuillez modifier l'findIndex
explication pour n'inclure que le membre "ou votre condition de recherche est plus complexe qu'une simple valeur ou référence" pour corriger cela car cela m'a égaré à l'origine. Merci![{a:1}].indexOf({a:1})
renvoie-1
bien que l'objet semble être le même (mais ce n'est pas le cas). Je ne sais pas si ces informations sont utiles dans la réponse car elles peuvent prêter à confusion. Si vous avez besoin d'en savoir plus sur le comportement exact du langage, vous devriez lire la spécification..indexOf(NaN)
reviendra toujours-1
carNaN==NaN
c'est toujoursfalse
.NaN
est un type primitif parce quetypeof NaN
estnumber
et ainsi sontnull
etundefined
, donc je modifierais ceci pour éviter de dire desindexOf
travaux sur les types primitifsFindIndex est utile si vous voulez trouver le premier élément qui correspond à votre prédicat: dans l'exemple du W3C, il y a des nombres et des correspondances si l'âge du client est supérieur ou égal à 18 ans.
console:
Vous pouvez trouver un index d'élément exact avec la fonction indexOf de Array, mais vous ne pouvez pas passer de prédicat. C'est plus rapide si vous voulez trouver un élément spécifique:
Retour:
Le comptage d'index commence à 0, donc le premier index d'élément est 0.
la source
La principale différence réside dans les paramètres de ces fonctions:
-> Array.prototype.indexOf () :
-> Array.prototype.findIndex () :
la source
Vous pouvez également utiliser
includes
:mais je préfère la
indexOf
méthode:la source
indexOf
est aussi beaucoup plus rapide.Une autre différence est qu'avec findIndex (), l'utilisateur peut appliquer une fonction et trouver l'élément dans le tableau qui passe le test.
Mais la même chose n'est pas vraie avec l' opérateur indexOf () . Un utilisateur peut simplement vérifier si l'élément particulier existe ou non dans le tableau.
la source
Simple - Quel type de structure de tableau utilisez-vous?
findIndex()
,;indexOf()
."Je veux trouver l'index dans un tableau d'objets , avec la clé" Orange ".
"Je veux trouver l'index dans un tableau simple ".
la source
Vous pouvez essayer les codes ci-dessous: -
la source