45 votes

La confusion au sujet de la fonction split() de JavaScript avec une chaîne vide

D'abord, j'ai défini une variable, et je l'ai mise à vide :

var str = "";

Puis je l'ai divisé par "&" :

var strs = str.split('&');

A la fin, je montre strs de la longueur :

alert( strs.length);

Il alerte "1".

Mais je n'affecte rien à la variable 'str'. Pourquoi a-t-elle encore une longueur, ne devrait-elle pas être nulle ?

63voto

Martin Jespersen Points 13702

Depuis le centre de documentation du MDC :

Note : Lorsque la chaîne est vide, split renvoie un tableau contenant une chaîne vide, plutôt qu'un tableau vide.

Lisez les documents complets ici : https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split

En d'autres termes, il s'agit d'une conception, et non d'une erreur :)

9voto

BoltClock Points 249668

Parce que vous obtenez un tableau qui contient la chaîne vide :

[ "" ]

Cette chaîne vide est un élément. Donc length est de 1.

7voto

mahatmanich Points 1812

Fractionnement de window.location.pathname

Notez que lors du fractionnement de window.location.pathname, il retournera la plupart du temps une longueur de +1 également.

Supposons que notre nom de chemin dans ce cas est : /index.html .

var str = window.location.pathname.split('/');

Il sera divisé en ["" , "index.html"] à dessein, comme cela a déjà été mentionné ici à maintes reprises.

Ce que l'on pourrait faire dans ce cas, c'est de supprimer le début et la fin de la phrase. / comme ça :

var str = window.location.pathname.replace(/^\/|\/$/g, '').split('/');

et obtenir la longueur "correcte".

4voto

jAndy Points 93076

Description

T tableau.

Lorsqu'il est trouvé, le séparateur est retiré de la chaîne et les sous-chaînes sont sont retournées dans un tableau. Si le séparateur est [ ] élément composé de l'intégralité de la chaîne de caractères.

Note : Lorsque la chaîne de caractères 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

1voto

empax Points 22

Éliminez toute chaîne nulle.

str.split('{SEPERATOR}').filter(r => r !== 'null')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X