2017-02-10 4 views
0

Javascript array lengh дает 1, если null.I использую функцию Split.Array Split null value counting 1 in javascript

var str = ''; 
var arr = str.split(','); 
alert(arr.length); 
**Output:1** 

Когда есть любое значение в строке подсчет правильно

var str = 'a,b,c'; 
    var arr = str.split(','); 
    alert(arr.length); 
    ****Output:3**** 
+0

Вы можете обернуть его в оператор if: var str = ''; if (str) { var arr = str.split (','); } else { var arr = []; } предупреждение (arr.length); Таким образом, у вас будет оценка вашей строки, и поскольку пустая строка оценивается как 'falsy' в JS, вы запускаете оператор else, когда строка пуста, возвращает пустой массив. – Falk

+0

Лучше дублировать: http://stackoverflow.com/questions/33516370/javascript-split-gives-array-size-one-instead-of-zero-for-empty-string. Другой был для Scala. Не знаю, как это произошло. –

ответ

1

пустой строка не нулевого значения. И String.prototype.split разбивает строку на индексы массива, когда находит символ разделителя. В вашей пустой строке есть одна строка. Поэтому вы получаете длину массива 1.

+0

ok.then как я могу рассчитать длину строки в массиве? – Raju

+0

@ Raju Разработайте больше на этом, пожалуйста, я не понимаю ваш вопрос вообще ... –

+0

@Raju Вы имеете в виду это? 'var totalLength = array.reduce (function (result, str) {result + = str.length; return result;}, 0);' –

1

когда вы делаете var arr = str.split (','); Возвращенный массив не равен NULL. Он имеет один элемент, и в нем есть пространство. Итак, когда вы делаете arr.length - он вернет 1, поскольку он имеет один элемент и этот элемент - это пробел "".

Надеюсь, это поможет. Happy Learning :)