2009-06-04 19 views
56

लिंक के पास Take() नामक एक सुविधाजनक ऑपरेटर विधि है जिसे IEnumerable लागू करने वाले किसी भी तत्व में दिए गए तत्वों की संख्या को वापस करने के लिए कहा जाता है। क्या सरणी के साथ काम करने के लिए jQuery में कुछ भी समान है?जावास्क्रिप्ट के साथ सरणी को आसानी से कैसे छोटा करें?

+16

दोस्तों, कृपया, जावास्क्रिप्ट jQuery से पहले सीखते हैं। मुझे डर है कल के प्रश्न होंगे "क्या अन्य डेटा प्रकार jQuery ने Arrays के बगल में खुलासा किया है?"। –

उत्तर

109

एक slice विधि

array.slice(0, 4); 

पहले चार तत्वों लौट जाएगा।

यदि आप अन्य मानों को त्यागना चाहते हैं तो इसे वापस अपने चर पर असाइन करना न भूलें।

नोट: यह केवल नियमित जावास्क्रिप्ट है, jquery की कोई आवश्यकता नहीं है।

+1

सही धन्यवाद बॉब। –

+13

नहीं (0,4) पहले 4 को पहले 5 नहीं लौटाएगा? –

+10

यह वास्तव में सच नहीं है। साइमन Keep सही है -।स्लाइस() विधि का दूसरा तर्क सरणी स्थिति * के बाद * अंतिम तत्व लौटाया जाना है। array.slice (0, 4) तत्व 0, 1, 2, और 3 - कुल 4 तत्व लौटाएगा। कटऑफ पॉइंट के रूप में दूसरे तर्क के बारे में सोचें, जहां .slice (0, x) सरणी की शुरुआत से सभी तत्वों को वापस कर देगा, लेकिन * सहित * x सहित। – Bungle

4

यदि आप दोनों तत्वों को प्राप्त करना चाहते हैं और उन्हें सरणी से हटा देना चाहते हैं, तो splice का उपयोग करें।

आप सरणी में तत्वों को बनाए रखना चाहते हैं, तो slice

2

का उपयोग आप चुनिंदा तत्वों को खींचने के लिए एक सरणी से बाहर है, तो आप jQuery.grep विधि का उपयोग कर सकते हैं।

(jQuery डॉक्स से)

var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ]; 

$("div").text(arr.join(", ")); 

arr = jQuery.grep(arr, function(n, i){ 
    return (n != 5 && i > 4); 
}); 

$("p").text(arr.join(", ")); 

arr = jQuery.grep(arr, function (a) { return a != 9; }); 
$("span").text(arr.join(", ")); 
18

आप कैसे काटना (अंत से तत्वों को निकाल कर एक सरणी को संशोधित) तो का उपयोग पूछ रहे हैं splice:

var a1 = [2,4,6,8]; 
var a2 = a1.splice(-2,2); // a1=[2,4], a2=[6,8] 

आप तो मूल को संशोधित किए बिना सरणी के सबसेट को पुनर्प्राप्त करने के लिए पूछ रहे हैं, फिर slice का उपयोग करें।

var a1 = [2,4,6,8]; 
var a2 = a1.slice(-2); // a1=[2,4,6,8], a2=[6,8] 

बस स्प्लिस संशोधित, स्लाइस एक्सेस को याद रखें। पहले तर्क के रूप में नकारात्मक संख्या सरणी के अंत से सूचकांक इंगित करती है।

var stooges = ["Moe", "Larry", "Shemp", "Curly", "Joe"]; 
stooges.length = 3; // now stooges is ["Moe", "Larry", "Shemp"] 

नोट:: आप अब लंबाई है जो आवंटित करता है, तो

85

(2 साल बाद ...) यदि आप वास्तव में एक सरणी काटना देख रहे हैं, तो आप भी length विशेषता का उपयोग कर सकते हैं वर्तमान लंबाई की तुलना में, नीचे दिखाए गए अनुसार, अपरिभाषित सरणी तत्व पेश किए गए हैं।

var stooges = ["Moe", "Larry", "Shemp"]; 
stooges.length = 5; 
alert(typeof stooges[4]); // alerts "undefined" 

संपादित करें:

नीचे उल्लेख @twhitehead के रूप में, अपरिभाषित तत्वों के अलावा ऐसा करने से बचा जा सकता है:

var stooges = ["Moe", "Larry", "Shemp"]; 
stooges.length = Math.min(stooges.length, 5); 
alert(stooges.length)// alerts "3" 
+5

मैं जब मैं एक कोड में यह देखा पहले हैरान था ... लेकिन यह सबसे अच्छा तरीका है (यदि आप सूचकांक 0 से छोटा कर रहे हैं) http://davidwalsh.name/empty-array –

+2

यह एक आश्चर्यजनक सरल समाधान है। – Dominique

+2

कचरा संग्रह करने के बारे में क्या था? –

8

कम मूल्य के लिए .length संपत्ति सेट करें।

आधिकारिक प्रलेखन: Array.prototype.length

+3

, शून्य से लंबाई निर्धारित करना सबसे आसान है। – hanmari

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