2011-03-02 11 views
24

पहले विभाजन() फ़ंक्शन के बारे में भ्रम की स्थिति:मैं एक चर सेट, और खाली करने के लिए यह सेट की जावास्क्रिप्ट

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

में:

var str = ""; 

तो मैं यह "&" के माध्यम से विभाजित अंत में, मैं strs की लंबाई दिखाने:

alert(strs.length); 

यह सचेत "1"।

लेकिन मैं 'str' चर के लिए कुछ भी असाइन नहीं करता हूं। यह अभी भी लंबाई क्यों है, यह शून्य नहीं होना चाहिए?

उत्तर

40

MDC दस्तावेज़ केंद्र से:

नोट: जब स्ट्रिंग खाली है, split एक खाली स्ट्रिंग के बजाय एक खाली सरणी युक्त एक सरणी देता है।

यहां पूरी डॉक्स पढ़ें: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split

दूसरे शब्दों में, इस डिजाइन से है, और नहीं एक त्रुटि :)

+0

+1 दस्तावेज़ लिंक, मुझे मिल जाएगा अधिक से अधिक लंबाई में शामिल है, तो आलसी तो इसके लिए पहले खोज नहीं की थी :) – BoltClock

+3

जब यह 'डिजाइन पसंद' एक लौटने से बेहतर होगा खाली सरणी? –

+3

यह स्थिरता के लिए है। '' और '। विभाजन (' और ')' 2 रिक्त तार लौटाता है; '' && '। विभाजन (' और ')' रिटर्न 3; आदि –

8

क्योंकि आप एक सरणी है कि खाली स्ट्रिंग मिलती है: रिक्त स्ट्रिंग एक तत्व है

[ "" ] 

है। तो length है 1.

1

जावास्क्रिप्ट split एक सरणी पैदा करता है। यही कारण है कि है, अपने चर, strs = [0]=>"" और इसकी लंबाई 1.

3

विवरण

विभाजन विधि रिटर्न नई सरणी है।

पाया गया, विभाजक से हटा दिया गया है स्ट्रिंग और सबस्ट्रिंग एक सरणी में लौटा दी गई हैं। अगर विभाजक छोड़ा गया है, तो सरणी में तत्व शामिल है जिसमें संपूर्ण स्ट्रिंग शामिल है।

नोट: जब स्ट्रिंग खाली है, विभाजन एक रिक्त स्ट्रिंग, बल्कि एक खाली सरणी से युक्त एक सरणी देता है।

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

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('/'); 

और "सही" एड लंबाई के साथ खत्म।

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; 
    }; 
+1

यह ", ए, बी, सी" .splitPlus (",") के लिए असफल हो जाएगा, हालांकि - लौटने [], जब इसे वापस करना चाहिए ["", "ए", "बी", "सी"]। आपको सरणी की लंबाई भी जांचनी होगी। – CherryDT

+0

अपनी स्थिति में a.length> 0 जोड़ें और। – aggaton

+0

@aggaton मैंने सही संस्करण जोड़ा: 'if (a [0] ==' '&& a.length == 1) वापसी []; ' –

0

इस

कोशिश

जावास्क्रिप्ट स्प्लिट फ़ंक्शन द्वारा दो एरे देता है, फिर

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

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

दोनों सरणी से 0 तो हालत सच

संबंधित मुद्दे