Подтвердить что ты не робот

Путаница в функции split() JavaScript

Сначала я устанавливаю переменную и устанавливаю ее пустой:

var str = "";

Затем я разделил его на "&":

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

В конце я показываю strs length:

alert( strs.length);

Это предупреждение "1".

Но я не назначаю ничего переменной 'str'. Почему он все еще имеет длину, должен ли он быть нулевым?

4b9b3361

Ответ 1

В центре документа MDC:

Примечание. Когда строка пуста, split возвращает массив, содержащий одну пустую строку, а не пустой массив.

Прочитайте полные документы здесь: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split

Другими словами, это по дизайну, а не по ошибке:)

Ответ 2

Поскольку вы получаете массив, содержащий пустую строку:

[ "" ]

Эта пустая строка - это один элемент. Итак, length равно 1.

Ответ 3

Разделение window.location.pathname

Обратите внимание, что при разбиении на window.location.pathname в основном будет также возвращаться длина +1.

Предположим, что наш путь в этом случае: /index.html.

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

Он будет разбит на ["" , "index.html"] по дизайну, как упоминалось здесь много раз раньше.

Что можно сделать в этом случае, разделите ведущий и конечный / так:

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

и закончите с "правильной" длиной ed.

Ответ 4

Описание

Метод split возвращает новый массив.

При обнаружении разделитель удаляется из строка и подстроки возвращается в массив. Если разделитель опущен, массив содержит один элемент, состоящий из целого строка.

Примечание. Когда строка пуста, split возвращает массив, содержащий один пустая строка, а не пустая строка массив.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split

Ответ 5

JavaScript split создает массив. То есть ваша переменная strs = [0]=>"" и ее длина равно 1.

Ответ 6

Мне надоело всегда проверять на [0] == '' так:

String.prototype.splitPlus = function(sep) {
  var a = this.split(sep)
  if (a[0] == '') return [];
  return a;
};

Исправлена ​​версия, когда элемент 1 может иметь значение null:

 String.prototype.splitPlus = function(sep) {
   var a = this.split(sep)
   if (a[0] == '' && a.length == 1) return [];
   return a;
  };

Ответ 7

попробуйте это

javascript дает два массива с помощью функции split, затем

var Val = "[email protected]";
var mail = Val.split('@');

if(mail[0] && mail[1])  {   alert('valid'); }
else    {   alert('Enter valid email id');  valid=0;    }

если оба массива содержат длину больше 0, тогда условие будет истинным