首先的分割()函數的混亂我設置一個變量,並將其設置爲空:關於JavaScript
var strs = str.split('&');
在:
var str = "";
然後,我通過「&」拆分它結束,我展示了strs
的長度:
alert(strs.length);
它提醒「1」。
但我沒有給'str'變量賦值。爲什麼它仍然有一個長度,不應該是零?
首先的分割()函數的混亂我設置一個變量,並將其設置爲空:關於JavaScript
var strs = str.split('&');
在:
var str = "";
然後,我通過「&」拆分它結束,我展示了strs
的長度:
alert(strs.length);
它提醒「1」。
但我沒有給'str'變量賦值。爲什麼它仍然有一個長度,不應該是零?
從MDC DOC中心:
注:當字符串是空的,
split
返回包含一個空字符串,而不是一個空數組的數組。
閱讀完整的文檔:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split
換句話說,這是由設計,而不是一個錯誤:)
因爲你得到一個包含空字符串數組:
[ "" ]
空字符串是一個元素。所以length
是1
的JavaScript split
創建一個數組。也就是說,你的變量,strs = [0]=>""
和其長度爲1。
說明
split方法返回新 陣列。
找到後,分隔符將從 中移除,字符串和子串是 返回的數組。如果省略分隔符 ,則該數組包含一個由整個 字符串組成的一個 元素。
注:當字符串是空的,分裂返回包含一個 空字符串,而不是空 陣列的陣列。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split
拆分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('/');
,並與「正確」的主編長度結束。
我生病了總是檢查的[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;
};
試試這個
javascript通過分割函數給出了兩個數組,然後
var Val = "[email protected]";
var mail = Val.split('@');
if(mail[0] && mail[1]) { alert('valid'); }
else { alert('Enter valid email id'); valid=0; }
如果兩個數組包含長度大於0,則情況將真正
+1文檔的鏈接,我得到了更多的偷懶所以沒有搜索它首先:) – BoltClock 2011-03-02 08:11:01
當將這種「設計選擇」比返回一個更好空陣列? – 2014-08-13 11:56:12
這是爲了一致性。 ''&'。split('&')'返回2個空字符串; '&&'。split('&')'返回3;等等。 – 2014-11-10 02:03:50