Maison >interface Web >js tutoriel >Implémentation des méthodes String.startsWith et endWith dans les astuces Javascript_javascript

Implémentation des méthodes String.startsWith et endWith dans les astuces Javascript_javascript

WBOY
WBOYoriginal
2016-05-16 15:56:201567parcourir

Lorsque vous travaillez sur le type String, StartWith(anotherString) et EndsWith(anotherString) sont des méthodes très utiles. Parmi eux, startWith détermine si la chaîne actuelle commence par anotherString et endWith détermine si elle se termine. Exemple :

"abcd".startsWith("ab"); // true
"abcd".startsWith("bc"); // false
"abcd".endsWith("cd");  // true
"abcd".endsWith("e");  // false
"a".startsWith("a");   // true
"a".endsWith("a");    // true

Malheureusement, Javascript n'est pas fourni avec ces deux méthodes, vous ne pouvez donc les écrire vous-même que si nécessaire. Bien sûr, ce n’est pas difficile à écrire.

if (typeof String.prototype.startsWith != 'function') {
 String.prototype.startsWith = function (prefix){
  return this.slice(0, prefix.length) === prefix;
 };
}

String.slice() est similaire à String.substring() dans le sens où ils obtiennent tous deux une sous-chaîne, mais certaines critiques disent que slice est plus efficace. La raison pour laquelle indexOf() n'est pas utilisé ici est que indexOf analysera la chaîne entière. Si la chaîne est très longue, l'efficacité de indexOf sera très mauvaise.

if (typeof String.prototype.endsWith != 'function') {
 String.prototype.endsWith = function(suffix) {
  return this.indexOf(suffix, this.length - suffix.length) !== -1;
 };
}

Contrairement à StartWith, indexOf peut être utilisé dans EndsWith. La raison en est qu'il analyse uniquement la dernière chaîne, et l'avantage par rapport à slice est qu'il n'a pas besoin de copier la chaîne, il suffit de la scanner directement, ce qui la rend plus efficace.

Déclaration:
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