Maison > interface Web > js tutoriel > Explication détaillée de l'utilisation de la méthode lastIndexOf() pour les tableaux et les chaînes dans les connaissances JavaScript_Basic

Explication détaillée de l'utilisation de la méthode lastIndexOf() pour les tableaux et les chaînes dans les connaissances JavaScript_Basic

WBOY
Libérer: 2016-05-16 15:10:55
original
2245 Les gens l'ont consulté

Array.prototype.lastIndexOf et String.prototype.lastIndexOf sont des méthodes très pratiques, mais beaucoup de gens ne savent pas qu'elles peuvent réellement transmettre deux paramètres. Le deuxième paramètre détermine la position de départ de la recherche :

.

Grammaire

str.lastIndexOf(searchValue[, fromIndex])
Copier après la connexion

La méthode lastIndexOf() renvoie la dernière occurrence de la valeur spécifiée dans la chaîne qui appelle cette méthode, ou -1 si elle n'est pas trouvée. Recherche vers l'avant à partir de la fin de la chaîne, en commençant par fromIndex.

Paramètres

1.searchValue
Une chaîne représentant la valeur à trouver.
2.fromIndex
Commencez la recherche à la position dans la chaîne où la méthode a été appelée. Peut être n’importe quel nombre entier. La valeur par défaut est str.length. S’il est négatif, il est traité comme 0. Si fromIndex > str.length, alors fromIndex est traité comme str.length.

Sensible à la casse

La méthode lastIndexOf est sensible à la casse. Par exemple, l'expression suivante renvoie -1 :

"Blue Whale, Killer Whale".lastIndexOf("blue"); // returns -1

Copier après la connexion

Utilisation de lastIndexOf

// Create an array.
var ar = ["ab", "cd", "ef", "ab", "cd"];

// 找到最后一个CD的位置
document.write(ar.lastIndexOf("cd") + "<br/>");
// 输出: 4

// 从正数第二个位置,搜索倒数第一个CD的位置
document.write(ar.lastIndexOf("cd", 2) + "<br/>");
// 输出: 1

// 从倒数第三个搜索最后一个ab的位置
document.write(ar.lastIndexOf("ab", -3) + "<br/>");
// 输出: 0

Copier après la connexion

La même utilisation de String.lastIndexOf est similaire

"canal".lastIndexOf("a") // returns 3
"canal".lastIndexOf("a",2) // returns 1
"canal".lastIndexOf("a",0) // returns -1 从第0个往前搜,不存在'a',返回-1
"canal".lastIndexOf("x") // returns -1

Copier après la connexion

Implémentation IE8 de lastIndexOf

Cependant, IE8 et versions antérieures de Microsoft ne prennent pas en charge Array.lastIndexOf et une implémentation compatible est requise. Vous pouvez vous référer à :

if (!Array.prototype.lastIndexOf) {
 Array.prototype.lastIndexOf = function(searchElement /*, fromIndex*/) {
 'use strict';

 if (this === void 0 || this === null) {
  throw new TypeError();
 }

 var n, k,
  t = Object(this),
  len = t.length >>> 0;
 if (len === 0) {
  return -1;
 }

 n = len - 1;
 if (arguments.length > 1) {
  n = Number(arguments[1]);
  if (n != n) {
  n = 0;
  }
  else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) {
  n = (n > 0 || -1) * Math.floor(Math.abs(n));
  }
 }

 for (k = n >= 0
   &#63; Math.min(n, len - 1)
   : len - Math.abs(n); k >= 0; k--) {
  if (k in t && t[k] === searchElement) {
  return k;
  }
 }
 return -1;
 };
}

Copier après la connexion

Vous pouvez utiliser ES5-Slim pour rendre les anciens navigateurs entièrement compatibles avec la syntaxe ES5.

Pourquoi devriez-vous éviter d'utiliser for in

Cependant, il convient de noter qu'après avoir ajouté des méthodes à Array.prototype, la syntaxe for in énumérera également la méthode lastIndexOf :

for (var idx in [1,3,5,7,9]) {
 console.log(idx)
}

>> 0 1 2 3 4 lastIndexOf

Copier après la connexion

Vous devriez plutôt utiliser la boucle for

for (var idx = 0; idx < [1,3,5,7,9].length; idx++) {
 console.log(idx)
}

Copier après la connexion

Ce problème peut être implémenté en utilisant Object.defineProperty pour éviter la méthode lastIndexOf de for dans l'énumération :

Object.defineProperty(Array, "lastIndexOf", { enumerable: false })

Copier après la connexion

Cependant, les navigateurs qui nécessitent généralement des implémentations compatibles ne prennent pas du tout en charge la méthode DefineProperty. Et dans la plupart des navigateurs, for in est beaucoup plus lent que la boucle for, vous devriez donc essayer d'éviter d'utiliser for in. Mais comment énumérer les clés des propriétés d’un Objet ? Utilisez Object.keys({ a:1 }) pour renvoyer un tableau de clés.

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal