Путаница в функции split() JavaScript
Сначала я устанавливаю переменную и устанавливаю ее пустой:
var str = "";
Затем я разделил его на "&":
var strs = str.split('&');
В конце я показываю strs
length:
alert( strs.length);
Это предупреждение "1".
Но я не назначаю ничего переменной 'str'. Почему он все еще имеет длину, должен ли он быть нулевым?
Ответы
Ответ 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, тогда условие будет истинным