जावास्क्रिप्ट के साथ एक सरणी को आसानी से कैसे काट दिया जाए?


102

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

या, अलग तरीके से पूछा: मैं जावास्क्रिप्ट में एक सरणी को कैसे काट सकता हूं?


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

जवाबों:


184

एक स्लाइस विधि है

array.slice(0, 4);

पहले चार तत्व वापस करेंगे।

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

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


15
Willnt (0,4) पहले 4 को वापस नहीं पहले 5 को?
साइमन

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

1
endशामिल नहीं है, तो @SimonKeep सही है, MDN developer.mozilla.org/en-US/docs/JavaScript/Reference/…
AsTeR

2
चर के रूप में इसे वापस असाइन करना याद रखें, यह बहुत महत्वपूर्ण है जितना कि यह सरल लग सकता है
kolexinfos

6
बुरा तरीका, आप एक नया सरणी उदाहरण बनाते हैं, स्मृति का उपयोग करते समय ध्यान रखें कि कोडिंग js एक बुरा विचार नहीं है।
जी। घीस

125

(2 साल बाद ...) यदि आप किसी सरणी को देखना चाहते हैं, तो आप lengthविशेषता का उपयोग भी कर सकते हैं :

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

नोट: यदि आप एक लंबाई जो आवंटित अब वर्तमान लंबाई से, अपरिभाषित सरणी तत्वों, परिचय के रूप में नीचे दिखाया गया है।

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 से छंटनी
कुमारहर्ष

5
यह एक आश्चर्यजनक सरल उपाय है।
डोमिनिक

3
कचरा संग्रह के बारे में क्या हो रहा है?
जी। घीस

1
@JonathanM वास्तव में, शून्य मानों को पेश नहीं किया जाता है; नए चर अपरिभाषित हैं, क्योंकि उन्हें घोषित किया गया है लेकिन उन्हें कोई मूल्य नहीं दिया गया है।
होवार्ड गीथस

3
गजब का! यह कहने योग्य है कि यह विधि Arrayएक नया बनाने के बजाय उसी को संशोधित कर रही है Array
रूमी

22

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

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

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

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

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


11

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

आधिकारिक दस्तावेज: Array.prototyp.length


3
सरणी में सभी तत्वों को मारने के लिए, लंबाई को शून्य पर सेट करना सबसे आसान है।
हमनारी

5

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

यदि आप तत्वों को सरणी में रखना चाहते हैं, तो स्लाइस का उपयोग करें


1

यदि आप चुनिंदा तत्वों को किसी सरणी से बाहर निकालना चाहते हैं, तो आप 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(", "));
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.