D'abord, je définis une variable et la mets à vide:
var str = "";
Ensuite, je l'ai divisé en "&":
var strs = str.split('&');
En fin de compte, je montre la longueur de strs
:
alert( strs.length);
Il alerte "1".
Mais je n'attribue rien à la variable 'str'. Pourquoi a-t-il encore une longueur, ne devrait-il pas être nul?
Du centre de documentation du MDC:
Remarque: Lorsque la chaîne est vide,
split
renvoie un tableau contenant une chaîne vide, plutôt qu'un tableau vide.
Lisez la documentation complète ici: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split
En d'autres termes, c'est par conception, et non une erreur :)
Parce que vous obtenez un tableau contenant la chaîne vide:
[ "" ]
Cette chaîne vide est un élément. Donc length
est 1.
Division de window.location.pathname
Notez que lors du fractionnement de window.location.pathname, il retournera généralement une longueur de +1 également.
Supposons que notre chemin dans ce cas est: /index.html
.
var str = window.location.pathname.split('/');
Il sera scindé en ["" , "index.html"]
de par sa conception, comme mentionné plusieurs fois auparavant.
Ce que l’on pourrait faire dans ce cas est d’éliminer le /
début et fin comme suit:
var str = window.location.pathname.replace(/^\/|\/$/g, '').split('/');
et se retrouver avec la longueur "correcte" ed.
La description
La méthode split renvoie le nouveau tableau .
Une fois trouvé, le séparateur est supprimé de , La chaîne et les sous-chaînes sont Renvoyés dans un tableau. Si le séparateur est omis de , Le tableau contient un élément Composé de la chaîne entière .
Remarque: lorsque la chaîne est vide, split renvoie un tableau contenant une chaîne vide , Plutôt qu'un tableau vide .
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split
J'en ai eu marre de toujours chercher un [0] == '' alors:
String.prototype.splitPlus = function(sep) {
var a = this.split(sep)
if (a[0] == '') return [];
return a;
};
Version corrigée pour laquelle l'élément 1 peut être null:
String.prototype.splitPlus = function(sep) {
var a = this.split(sep)
if (a[0] == '' && a.length == 1) return [];
return a;
};
JavaScript split
crée un tableau. En d’autres termes, votre variable, strs = [0]=>""
et sa longueur est 1.