অ্যারে থেকে শেষ আইটেম সরান


440

আমি নিম্নলিখিত অ্যারে আছে।

var arr = [1,0,2];

আমি সর্বশেষ উপাদানটি 2 মুছে ফেলতে চাই।

আমি ব্যবহার করেছি arr.slice(-1);তবে এটি মানটি সরিয়ে দেয় না।




3
arr.splice (-1,1) আপনার অ্যারে ফিরে আসবে [1,0]; অরিস্লাইস (-1,1) আপনার কাছে ফিরে আসবে [2]
আঞ্জা mশুখামতোভা

10
arr.slice(0,-1)আমার জন্য সেরা সমাধান ছিল
ব্ল্যাক মাম্বা

3
প্রশ্নটি কিছুটা দ্বিধাগ্রস্ত, যেহেতু "শেষ উপাদানটি সরান" এর অর্থ হতে পারে অ্যারের থেকে উপাদানটি সরান এবং অ্যারে রাখুন (একটি উপাদান কম রাখলে)। তবে এটির অর্থ উপাদানটি সরিয়ে এবং উপাদানটি রাখাও হতে পারে। প্রথম ঘটনা: splice()দ্বিতীয় মামলা: pop()
thoni56

উত্তর:


517

স্প্লাইস ব্যবহার করুন (সূচক, হাউম্যানি)

arr.splice(-1,1)

1
@ পৃথ্বীরাজ মিত্র আপনি কি 1 এবং 0 টি মুছতে চান? তাহলে অ্যারে == [2]?
আন্তন

3
এক-উপাদান অ্যারেগুলির জন্য কাজ করে না: [1].splice(-1, 1)=>[1]
Tvaroh

135
এটি সেরা সমাধান নয়, সেরা হ'ল পপ ফাংশন। এটা না.
টমমিক্স

6
পপ নিজেই কেবল সর্বশেষ উপাদানটির মান প্রদান করবে। মূল অ্যারে থেকে শেষ উপাদান মুছে ফেলার জন্য 1), এবং 2) যে উপাদান আসতে একটি একক উপাদানের বিন্যাস হিসাবে - অর্থাত: যদি আমি সঠিকভাবে বুঝতে @PrithvirajMitra দুটি জিনিস চায় [0,1,2] -> [2], পিছনে যাব [0,1]। যদি এটি হয় [arr.pop()]তবে কৌতুকটি করবে।
বেন হাল হাল

11
দ্রষ্টব্য যে array.pop()পরিবর্তিত পরিবর্তন হবে array, যখন slice(0, -1)না। পপ অবশ্যই দ্রুত কিন্তু সমস্ত প্রয়োজনের জন্য সর্বদা উপযুক্ত নাও হতে পারে।
adelriosantiago

621

জাভা স্ক্রিপ্ট কনভেনশন দ্বারা অ্যারে.প্রোটোটাইপ.পপ ()

let fruit = ['apple', 'orange', 'banana', 'tomato'];
let popped = fruit.pop();

console.log(popped); // "tomato"
console.log(fruit); // ["apple", "orange", "banana"]

7
অ্যারে.প্রোটোটাইপ.পপ () সবচেয়ে দ্রুত jsppha.com/slice-vs-splice-vs-pop/3
ড্যানিয়েল

1
পপ () ব্যবহার করার সময়, jQuery ('# foo')। ভ্যাল (নম্বর.পপ ()) না করার বিষয়ে নিশ্চিত হন, যদি না আপনি কেবল অ্যারের শেষ আইটেমটিকে ক্ষেত্রের মধ্যে রাখতে চান। পপ () সরানো উপাদানটি ফেরত দেয়। স্টুয়ার্ট যেমন করেছেন, প্রথমে নাম্বার করুন.পপ (); এবং তারপর, jQuery ( '# foo বিন্যাস') না Val (নম্বর) ...।
চার্লস রবার্টসন

4
সেরা সমাধান +1
mdlar

2
আনপপ () থাকা ভাল হবে যা বাকি অ্যারেটি ফেরত দেয়।
ইমারফ অফ

2
অ্যারে অপরিবর্তনীয় রাখার সময় এটি করার কোনও উপায়?
নাইয়াউ

263

আপনি এই .slice()পদ্ধতিটি ব্যবহার করে এটি করতে পারেন:

arr.slice(0, -1);    // returns [1,0]

এখানে একটি ডেমো রয়েছে:

var arr = [1, 0, 2];
var newArr = arr.slice(0, -1);    // returns [1,0]

console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array    : </b>
<div id="div1"></div>
<br/>
<b>After slice(0, -1): </b>
<div id="div2"></div>

পরিবর্তে করছেন:

arr.slice(-1);   // returns [2]

এখানে একটি ডেমো রয়েছে:

var arr = [1, 0, 2];
var newArr = arr.slice(-1);    // returns [2]

console.log(newArr);
$('#div1').text('[' + arr + ']');
$('#div2').text('[' + newArr + ']');
<script src="http://code.jquery.com/jquery.min.js"></script>
<b>Original Array    : </b>
<div id="div1"></div>
<br/>
<b>After slice(-1): </b>
<div id="div2"></div>

ব্যাখ্যা: -

Array.prototype.slice()সংক্ষিপ্ত slice()পদ্ধতিতে বা এর প্রাথমিক বাক্য গঠনটি হ'ল:

arr.slice([begin[, end]])

এখানে,

beginপরামিতি, যা একটি অ্যারের শুরু থেকে নিষ্কাশন এ শূন্য ভিত্তিক সূচি। সুতরাং, উপরের উদাহরণের উপর ভিত্তি করে বলি যদি আমরা কিছু করি

arr.slice(0)    // returns [1,0,2]

এটি অবস্থান 0 থেকে ক্রম শুরু হতে সমস্ত অ্যারের উপাদানগুলি ফিরে আসবে এবং এটি [1,0,2]। একইভাবে, আমরা যদি

arr.slice(1)    // returns [0,2]

এটি এখানে ফিরে আসবে [0,2]যেহেতু 0 এখানে 1 পজিশনে রয়েছে এবং এর পরে সবকিছু। এখন, আপনার ক্ষেত্রে আপনি একটি নেতিবাচক সূচী পাস করেছেন, -1যেমন সূচনা পরামিতি হিসাবে, যা অনুক্রমের শেষে থেকে একটি অফসেট নির্দেশ করে। সুতরাং, slice(-1)আপনার ক্ষেত্রে সিকোয়েন্সে সর্বশেষ এক অ্যারের উপাদানটি বের করা হয় এবং তা হ'ল 2( আমরা ইতিমধ্যে উপরের ডেমোতে দেখেছি )।

এখন, এখানে পদ্ধতি সিনট্যাক্সের endপ্যারামিটার সম্পর্কে এখানে কথা বলা যাক slice()। এটি আবার শূন্য-ভিত্তিক সূচক যেখানে একটি অ্যারে থেকে নিষ্কাশন শেষ হয়। সুতরাং, আসুন আমরা বলতে পারি যে আমাদের মতো অ্যারে রয়েছে:

var arr = [1, 0, 2, 5, 3, 9];

এবং আমরা 2,5,3অ্যারেতে কেবল উপাদানগুলি পেতে চাই । এখন, 2সিকোয়েন্স শুরু থেকে অবস্থান 2এবং শেষ উপাদানটির জন্য 3এটি 4। আমাদের এখানে অবস্থানের 5 টি অবস্থান নিষ্কাশন শেষ করতে হবে, কারণ আমাদের অবস্থানের আগে উপাদানটি পাওয়া দরকার। সুতরাং, আমরা slice()এখানে সহজভাবে পদ্ধতি প্রয়োগ করব

arr.slice(2, 5)    // returns [2,5,3]

আপনার ক্ষেত্রে, আমরা -1শেষ প্যারামিটার হিসাবে প্রয়োগ করেছি , তাই আমাদের কোডটি এর মতো

arr.slice(0, -1)   // returns [1,0]

নেতিবাচক সূচক হিসাবে, endঅনুক্রমের শেষে থেকে একটি অফসেট ইঙ্গিত করে। সুতরাং, slice(0,-1)অনুক্রমের দ্বিতীয় থেকে শেষের উপাদানটির মাধ্যমে প্রথম উপাদানটি বের করে। সুতরাং, আমরা পছন্দসই আউটপুট পেতে। আমরা পছন্দ করতে পারেন

arr.slice(0, 2)    // returns [1,0]

আমরা একই আউটপুট পাবেন। তবে, আমি -1এখানে দীর্ঘতর অ্যারের মতো প্রয়োগ করতে এর সহজ হিসাবে ব্যবহার করেছি

[0,2,3,1,2,9,3,6,3,9,1,0,2,9,0,1,1,2,3,4,7,9,1]

আপনি যদি কেবল সর্বশেষ উপাদানটি সরাতে চান তবে আপনি এখানে বসে শেষ 9 এর অবস্থান এবং এখানে করা পছন্দগুলি গণনা করতে চান না arr.slice(0, 22)। তারপরে আপনি কেবল এখানে নেতিবাচক সূচক যুক্তিটি বাস্তবায়ন করতে পারেন & করুন

arr.slice(0, -1) // same result as arr.slice(0, 22)

আশা করি এটা সাহায্য করবে!


11
এটি দুর্দান্ত কাজ করে, কেবলমাত্র নিশ্চিত হয়ে নিন যে আপনি .slice () এর কাছে কল করেছেন এবং .s পি উকুনে () নয়।
ব্রায়ান হাসডেন

4
এটি লক্ষ করা উচিত যে এই সমাধানটি অ্যারে থেকে শেষ আইটেমটি সরিয়ে দেয় নাarr বরং এটি একটি নতুন অ্যারে প্রদান করে যা সেই শেষ আইটেমটি বাদ দেয়। মোজিলার ডক্স যেমন বলে: "স্লাইস () পদ্ধতিটি অ্যারের কোনও অংশের অগভীর অনুলিপিটি একটি নতুন অ্যারে অবজেক্টে ফিরিয়ে দেয়"।
এফ লেকচাস

4
প্রশ্নের নমুনা কোড সুস্পষ্টভাবে জিজ্ঞাসা করে যে কীভাবে মূল অ্যারে থেকে সরিয়ে শেষ মান সহ একটি নতুন অ্যারে পাবেন। তাই arr.slice(0, -1)সেরা উত্তর।
সসনাবে


66

উদাহরণ দিয়ে শিখুন:

let array_1 = [1,2,3,4];
let array_2 = [1,2,3,4];
let array_3 = [1,2,3,4];

array_1.splice(-1,1)  // output --> [4]      array_1 = [1,2,3]
array_2.slice(0,-1);  // output --> [1,2,3]  array_2 = [1,2,3,4]
array_3.pop();        // output --> 4        array_3 = [1,2,3]

13
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটি সবচেয়ে বেশি কী ভুল হয় তা চিত্রিত করে । > আপনার চাইলে অ্যারেটি ফিরিয়ে দেওয়া বা আপনি যেভাবে চান অ্যারেটি পরিবর্তন করতে পারেন।
রাইজিংএজেন্ট

1
@ রাইজিংএজেন্ট এই বিষয়গুলি লক্ষ্য করার জন্য ধন্যবাদ :)
লুকাশ লিসিস

43

sliceআসল অ্যারে পরিবর্তন করে না বলে আপনার এটি করা দরকার ।

arr = arr.slice(-1);

আপনি যদি মূল অ্যারেটি পরিবর্তন করতে চান তবে আপনি ব্যবহার করতে পারেন splice:

arr.splice(-1, 1);

বা pop:

arr.pop();

22

আমি .pop()সর্বাধিক 'সঠিক' সমাধান হিসাবে বিবেচনা করব, তবে, কখনও কখনও এটি কার্যকর না হতে পারে কারণ আপনাকে ঠিক শেষ উপাদান ছাড়াই অ্যারে ব্যবহার করা প্রয়োজন ...

এই ক্ষেত্রে আপনি নিম্নলিখিতটি ব্যবহার করতে চাইতে পারেন, এটি ফিরে আসবে [1,2,3]

var arr = [1,2,3,4];
console.log(arr.splice(0,arr.length-1));

যখন .pop()ফিরে আসবে 4:

var arr = [1,2,3,4];
console.log(arr.pop());

যা কাম্য নাও হতে পারে ...

আশা করি এটি আপনার কিছুটা সময় সাশ্রয় করবে।


1
ধন্যবাদ বন্ধু, এটি হ'ল সঠিক উদাহরণ যা আমাকে ব্যবহার করা উচিত। আমি তার প্রশংসা করি :)
ব্যারি মাইকেল ডয়েল

2
এটি সবচেয়ে সঠিক উত্তর। এটি লজ্জাজনক অন্যরা উচ্চতর স্থান পেয়েছে।
মিমলা


12

আপনি কেবল ব্যবহার করতে পারেন, arr.pop()

এটি অ্যারের শেষ প্রবেশটি সরিয়ে দেয়।

var arr = [1,0,2]; 
var popped = arr.pop();//Now arr = [1,0] & popped = 2

8

আপনার ব্যবহারের ক্ষেত্রে কেবল নিম্নলিখিতটি ব্যবহার করুন:

var arr = [1,2,3,4];
arr.pop() //returns 4 as the value
arr // value 4 is removed from the **arr** array variable

শুধু একটি নোট. আপনি যখন pop()ফাংশনটি সম্পাদন করেন তবুও লাইনটি পপড আইটেমটি প্রদান করে মূল অ্যারেটি কার্যকর হয় এবং পপড উপাদানটি সরানো হয়।


7

আপনি এটি দুটি উপায়ে ব্যবহার করে করতে পারেন splice():

  1. arr.splice(-1,1)
  2. arr.splice(arr.length-1,1)

splice(position_to_start_deleting, how_many_data_to_delete) দুটি প্যারামিটার লাগে।

position_to_start_deleting: শূন্য ভিত্তিক সূচক যেখানে থেকে মোছা শুরু করবেন। how_many_data_to_delete: নির্দেশিত সূচক থেকে, কতটা পরপর তথ্য মুছে ফেলা উচিত।

এছাড়াও আপনি শেষ উপাদান ব্যবহার অপসারণ করতে পারেন pop()যেমন pop()কিছু অ্যারে থেকে সরিয়ে শেষ উপাদান।
ব্যবহারarr.pop()


6

arr.slice(-1)অ্যারের শেষ উপাদানটির একটি অনুলিপি ফিরে আসবে , তবে মূল অ্যারেটি অবিস্মরণিত রেখে দেয়।

nএকটি অ্যারের থেকে শেষ উপাদানগুলি সরাতে , ব্যবহার করুন arr.splice(-n)("স্প্লাইস" এ "পি" নোট করুন)। রিটার্ন মান হ'ল সরানো উপাদানগুলি সহ একটি নতুন অ্যারে হবে।

সহজ, এখনও জন্য n == 1, ব্যবহারval = arr.pop()


5
var arr = [1,0,2];
arr.length--; 

// সর্বশেষ উপাদানটি সরিয়ে দেয় // arr.leight> 0 কিনা তা পরীক্ষা করা দরকার to


5

এই পদ্ধতিটি অ্যারের শেষ উপাদানটি মুছতে এবং সঞ্চয় করতে আরও সহায়ক।

var sampleArray = [1,2,3,4];// Declaring the array
var lastElement = sampleArray.pop();//this command will remove the last element of `sampleArray` and stores in a variable called `lastElement` so that you can use it if required.

এখন ফলাফলগুলি:

console.log(sampleArray); //This will give you [1,2,3]
console.log(lastElement); //this will give you 4

এই উত্তরটি কীভাবে আলাদা ?
এমপাসকোভ

ইয়া সত্য, তবে এটি আরও বিশদযুক্ত। আপনার উত্তরটি কোনও শিক্ষানবিশকে বোঝা মুশকিল।
রাজাত নায়েক

4

এটি লক্ষণীয় যে sliceউভয়ই আবার নতুন অ্যারে ফিরিয়ে দেবে , যেখানে .pop()এবং.splice() পরিবর্তন ঘটান হবে বিদ্যমান অ্যারে।

আপনি যদি শৃঙ্খলিত কমান্ড শৈলীর সাথে ডেটা সংগ্রহগুলি পরিচালনা করতে পছন্দ করেন, তবে আপনি সত্যিকার অর্থে sliceএরকম কিছু পেতে চাইবেন।

উদাহরণ স্বরূপ:

myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

var newArrayOfThings = myArray
  .filter(x => x > 5)              // only bigly things
  .slice(-1)                       // get rid of the last item
  .map(x => `The number is: ${x}`);// map to a set of strings

"পপ" এর সাথে একই ধরণের জিনিসটি করার জন্য এটির জন্য আরও অনেক গণ্ডগোল, এবং পরিবর্তনশীল পরিচালনার প্রয়োজন হতে পারে map , filterইত্যাদি, আপনি একটি নতুন অ্যারে ফিরে পেতে হবে না।

এটি একই ধরণের জিনিস push, যা অ্যারের শেষে একটি আইটেম যুক্ত করে। আপনি সম্ভবত আরও ভাল হতে পারেন concatযেহেতু এটি আপনাকে প্রবাহকে চালিয়ে যেতে দেয়।

myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

var newArrayOfThings = myArray
  .filter(x => x > 5)              // only bigly things
  .slice(-1)                       // get rid of the "10"
  .concat([100])                   // note with concat, you must pass an array
  .map(x => `The number is: ${x}`) // map to a set of strings
  


3

স্প্লাইস (সূচক, হাউম্যানি) - এই সমাধানটি ভাল শোনাচ্ছে। কিন্তু এই হাউমানি কেবল ইতিবাচক অ্যারে সূচক জন্য কাজ করবে। শেষ দুটি আইটেম অপসারণ করতে বা তিনটি আইটেম নিজেই সূচকটি ব্যবহার করে।

উদাহরণস্বরূপ, শেষ দুটি আইটেম সরানোর জন্য স্প্লাইস (-2)। শেষ তিনটি আইটেম সরানোর জন্য স্প্লাইস (-3)


3

Lodash আপনি ব্যবহার করতে পারেন dropRight আপনি যদি জানেন যা উপাদান সরানো হয়েছে পরোয়া করি না:

_.dropRight([1, 2, 3])
// => [1, 2]

_.dropRight([1, 2, 3], 2);
// => [1]

3
var a = [1,2,3,4,5,6]; 
console.log(a.reverse().slice(1).reverse());
//Array(5) [ 1, 2, 3, 4, 5 ]

যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কীভাবে এবং / বা কেন এটি সমস্যার সমাধান করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করলে উত্তরের দীর্ঘমেয়াদী মান উন্নত হবে।
ভাসিলিসা

3

2019 ইসিএমএ 5 সমাধান:

const new_arr = arr.reduce((d, i, idx, l) => idx < l.length - 1 ? [...d, i] : d, [])

ধ্বংসাত্মক, জেনেরিক, ওয়ান-লাইনার এবং আপনার অ্যারের শেষে কেবল একটি অনুলিপি এবং পেস্ট প্রয়োজন।


1
'অ ধ্বংসাত্মক' কি মূল প্রশ্ন চায় মত শব্দ করে না: I would like to remove the last element । এটির জন্য মূল অ্যারেটিতে একটি ধ্বংসাত্মক / মিউটেশন অপারেশন দরকার।
বেন হাল


1

শেষ আইটেমটি সরিয়ে ফেলার এটি ভাল উপায়:

if (arr != null && arr != undefined && arr.length > 0) {
      arr.splice(arr.length - 1, 1);
}

নিম্নলিখিত হিসাবে স্প্লাইস বিস্তারিত:

স্প্লাইস (স্টার্টইন্ডেক্স, বিভাজনের সংখ্যা)


1
var stack = [1,2,3,4,5,6];

stack.reverse().shift();

stack.push(0);

আউটপুট হবে: অ্যারে [0,1,2,3,4,5] । এটি আপনাকে নতুন পরিমাণে যতটা চাপ দেবে তত পরিমাণ অ্যারে উপাদান রাখার অনুমতি দেবে।


আপনার শিফট করার পরে বা আবার সঠিক ক্রম পেতে আপনার ধাক্কা দেওয়ার পরে আপনাকে অন্য বিপরীত দরকার
সাইপটাস

বিপরীত মূল অ্যারে বিপরীত। আমাকে ধরা দিয়েছে ... একবার বা দু'বার বলতে দাও ...
সাইমন_উইভার

1

আর একটি পদ্ধতি সূচকের উপর ভিত্তি করে ফিল্টার করা:

arr.filter((element, index) => index < arr.length - 1);

দ্রষ্টব্য: filter()নতুন অ্যারে তৈরি করে, বিদ্যমানটি পরিবর্তন করে না।


0

আপনি যদি জাভাস্ক্রিপ্টে অ্যারের শেষ থেকে এন আইটেমটি সরাতে চান তবে আপনি সহজেই ব্যবহার করতে পারেন:

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