একটি জাভাস্ক্রিপ্ট অ্যারেতে, আমি প্রথম উপাদানটি বাদ দিয়ে কিভাবে শেষ 5 টি উপাদান পেতে পারি?


197
[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
@ জেসন: তিনি পাঁচটি উপাদান চান।
স্ল্যাक्स

@ জেসন, হ্যাঁ আমি শেষ উপাদানগুলি চাই (5 পর্যন্ত)
টিমেক্স 21

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 হতে হবে, এই অরিস্লাইস (ম্যাথ.ম্যাক্স (অর লিউথেন্থ - 5, 0)) আমার পক্ষে কাজ করেছে।
কিউমাস্টার

@ টুটসি না এটি না, এটি প্রথম উপাদানটিকেও ফেরত দেয়।
জানুয়ারী

3
অথবা আপনি আমার উত্তর>>> এর মতো চেইন স্লাইসটি করতে পারতেন arr.slice(1).slice(-5)। এছাড়াও আপনার মধ্যে কেউ কেউ শিরোনামটি পড়তে ব্যর্থ হওয়ায় ওপি অ্যারের প্রথম ফলাফলটি বাদ দিতে চেয়েছিল: |
বেলডান্ডু

21
এটা করা উচিত নয় arr.slice(Math.max(arr.length - 5, 0))?
ব্যবহারকারী 151496

7
প্রশ্নটিতে "প্রথম উপাদানটি বাদ দিয়ে" বলা হয় যা কেন সর্বশেষ মানটি 1এবং না 0
ডন ক্রিকশঙ্ক

68

এখানে এমন একটি আমি দেখিনি যা এমনকি ছোটও নয়

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

আপনি lodash, তার এমনকি সহজ ব্যবহার করেন তাহলে takeRight

_.takeRight(arr, 5);


2
অ্যারেতে 5 টিরও কম উপাদান রয়েছে কিনা তাও যত্ন নেয়
দেবঙ্ক

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
আমাকে পুনরায় চাপ দিন। মন্তব্যগুলি থেকে, সর্বশেষ পাঁচটি উপাদান , আপনি কেবল সর্বশেষ 3 ফিরিয়ে দেন। যা উদাহরণ is জল্পনা নয়।
জেসন ম্যাকক্রিয়ারি

1
-1 হট্টগোল সঠিক উত্তর প্রদান সম্পর্কে । যদিও আপনার উত্তরটি শেষ 3 উপাদানগুলি ফেরত দেওয়ার জন্য কাজ করে এটি প্রথম উপাদানটি বাদ দিয়ে সর্বশেষ 5 উপাদান সরবরাহ করতে কাজ করে না । যা ছিল ওপির অনুমান।
জেসন ম্যাকক্রারি

1
আবার, এটি উদ্বেগের বিষয় নয় । এসও এর মূল বিষয় হ'ল নির্দিষ্ট ব্যবহারকারীর প্রশ্নের উত্তর সরবরাহ করা। আপনার মূল উত্তরটি দেয় নি। প্রকৃতপক্ষে, আপনার আপডেটটি এখনও অনুমানটির সাথে মেলে না।
জেসন ম্যাকক্রারি


1

ES6 উপায়:

আমি ব্যবহার নিয়োগ ডেসট্রাকচারিং অ্যারের জন্য পেতে firstএবং অবশিষ্ট restউপাদান এবং তারপর আমি শেষ পাঁচটি নেব restসঙ্গে ফালি পদ্ধতি:

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]))
);

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.