首先我设置一个变量,并将其设置为空:
var str = "";
然后我将其拆分为“&”:
var strs = str.split('&');
最后,我显示strs
的长度:
alert( strs.length);
警告“1”。
但我没有为'str'变量赋值。为什么它仍然有一个长度,它不应该为零吗?
答案 0 :(得分:53)
来自MDC文档中心:
注意:当字符串为空时,
split
返回一个包含一个空字符串的数组,而不是一个空数组。
阅读完整文档:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split
换句话说,这是设计上的,而不是错误:)
答案 1 :(得分:8)
因为你得到一个包含空字符串的数组:
[ "" ]
那个空字符串是一个元素。所以length
是1。
答案 2 :(得分:5)
拆分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长度结束。
答案 3 :(得分:3)
描述
split方法返回new 阵列。
找到后,将从中删除分隔符 字符串和子串是 以数组形式返回。如果是分隔符 省略,数组包含一个 元素由整个组成 字符串。
注意:当字符串为空时,split会返回一个包含一个数组的数组 空字符串,而不是空字符串 阵列强>
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split
答案 4 :(得分:0)
JavaScript split
创建一个数组。也就是说,您的变量strs = [0]=>""
及其长度为1。
答案 5 :(得分:0)
我厌倦了总是检查[0] ==''所以:
String.prototype.splitPlus = function(sep) {
var a = this.split(sep)
if (a[0] == '') return [];
return a;
};
元素1可能为空时的更正版本:
String.prototype.splitPlus = function(sep) {
var a = this.split(sep)
if (a[0] == '' && a.length == 1) return [];
return a;
};
答案 6 :(得分:0)
消除任何空字符串。
str.split('{SEPERATOR}').filter(r => r !== 'null')
答案 7 :(得分:-1)
试试这个
javascript通过split函数提供两个数组,然后
var Val = "abc@gmail.com";
var mail = Val.split('@');
if(mail[0] && mail[1]) { alert('valid'); }
else { alert('Enter valid email id'); valid=0; }
如果两个数组都包含大于0的长度,则条件为真