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


198
[1, 55, 77, 88] // ...would return [55, 77, 88]

अतिरिक्त उदाहरण जोड़ना:

[1, 55, 77, 88, 99, 22, 33, 44] // ...would return [88, 99, 22, 33, 44]

[1] // ...would return []

1
आपका उदाहरण अंतिम 3 तत्व है। अपने विनिर्देशन का थोड़ा और प्रदान करें।
जेसन मैकक्रेरी

1
क्या आप हमेशा अंतिम 5 चाहते हैं? या हर कोई लेकिन पहली, कोई फर्क नहीं पड़ता लंबाई?
शेनलेक

3
@ जेसन: वह पांच तत्वों तक चाहता है।
SLss

@ जेसन, हां मैं आखिरी तत्व (5 तक) चाहता हूं
TIMEX

3
जैसा कि मेरे जवाब में जो संभवत: सबसे सुंदर और सबसे छोटा तरीका हैarr.slice(1).slice(-5)
बेलदंडू

जवाबों:


339

आप कॅाल कर सकते हैं:

arr.slice(Math.max(arr.length - 5, 1))

यदि आप पहले तत्व को बाहर नहीं करना चाहते हैं, तो उपयोग करें

arr.slice(Math.max(arr.length - 5, 0))

8
+1 सरल और उपयोगी। इसके अतिरिक्त मुझे लगता है कि अंतिम मान (1) काम करने के लिए 0 होना चाहिए, इस arr.slice (Math.max (arr.length - 5, 0)) ने मेरे लिए काम किया।
QMaster

@ टुटेक नहीं, यह नहीं है, यह पहला तत्व भी लौटाता है।
Jan

3
या आप सिर्फ मेरे जवाब में>>> की तरह एक चेन स्लाइस कर सकते थे arr.slice(1).slice(-5)। आप में से कुछ भी शीर्षक पढ़ने में विफल रहे क्योंकि ओपी पहले परिणाम को छोड़ना चाहता था: |
बेलदंडू

21
क्या यह नहीं होना चाहिए arr.slice(Math.max(arr.length - 5, 0))?
user151496

7
प्रश्न कहता है "पहले तत्व को छोड़कर" जो कि अंतिम मान क्यों है 1और नहीं है 0
डॉन क्रिकेशंक

69

यहाँ एक है जो मैंने नहीं देखा है वह और भी छोटा है

arr.slice(1).slice(-5)

आप क्या चाहते हैं, इसके प्रमाण के लिए नीचे कोड स्निपेट चलाएँ

var arr1 = [0, 1, 2, 3, 4, 5, 6, 7],
  arr2 = [0, 1, 2, 3];

document.body.innerHTML = 'ARRAY 1: ' + arr1.slice(1).slice(-5) + '<br/>ARRAY 2: ' + arr2.slice(1).slice(-5);

इसे करने का एक और तरीका है कि आप अपने ब्राउज़र से इसे करने की कोशिश कर रहे हैं, तो अगर आप एक बड़ी जावास्क्रिप्ट मिनिफ़ाइड फ़ाइल को लोड करने का मन नहीं करते हैं, तो यह https://lodash.com/docs#rest- का उपयोग करना होगा ।

_.slice(_.rest(arr), -5)


29

यदि आप लॉश का उपयोग कर रहे हैं, तो टेकराइट के साथ यह और भी सरल है ।

_.takeRight(arr, 5);


2
यह भी ध्यान रखता है कि सरणी में 5 से कम तत्व हैं
Devank

11

इसे इस्तेमाल करे:

var array = [1, 55, 77, 88, 76, 59];
var array_last_five;
array_last_five = array.slice(-5);
if (array.length < 6) {
     array_last_five.shift();
}

2
यह केवल उपयोगकर्ता के विशिष्ट उदाहरण के लिए काम करता है। यह 4. की लंबाई के साथ सरणियाँ है
जेसन मैककेरी

नहीं वास्तव में नहीं। सरणी की किसी भी लंबाई के साथ ठीक काम करता है। -3 इंगित करता है कि अंतिम 3 तत्वों को वापस किया जाना चाहिए।
अर्का

1
मुझे rephrase करते हैं। टिप्पणियों से, अंतिम पांच तत्व , आप केवल अंतिम 3 को लौटाते हैं। कौन सा उदाहरण है। युक्ति नहीं।
जेसन मैककरी

1
-1 उपद्रव सही जवाब देने के बारे में है । जबकि आपका उत्तर अंतिम 3 तत्वों को लौटाने के लिए काम करता है , यह पहले तत्व को छोड़कर अंतिम 5 तत्वों को प्रदान करने के लिए काम नहीं करता है । जो ओपी का चश्मा था।
जेसन मैकक्रेरी

1
फिर, यह चिंता की बात नहीं है । SO का मुख्य बिंदु विशिष्ट उपयोगकर्ता प्रश्नों के उत्तर प्रदान करना है। आपका मूल उत्तर नहीं था। वास्तव में, आपका अपडेट अभी भी कल्पना को पूरा नहीं करता है।
जेसन मैककरी 14


1

ES6 रास्ता:

मैं तत्वों को प्राप्त करने और शेष तत्वों के लिए विनाशकारी असाइनमेंट का उपयोग करता हूं और फिर मैं स्लाइस विधि के साथ अंतिम पांच ले जाऊंगा :firstrestrest

const cutOffFirstAndLastFive = (array) => {
  const [first, ...rest] = array;
  return rest.slice(-5);
}

cutOffFirstAndLastFive([1, 55, 77, 88]);

console.log(
  'Tests:',
  JSON.stringify(cutOffFirstAndLastFive([1, 55, 77, 88])),
  JSON.stringify(cutOffFirstAndLastFive([1, 55, 77, 88, 99, 22, 33, 44])),
  JSON.stringify(cutOffFirstAndLastFive([1]))
);

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.