ฉันมีอาเรย์ต่อไปนี้
var arr = [1,0,2];
ฉันต้องการลบองค์ประกอบสุดท้ายเช่น 2
ฉันใช้arr.slice(-1);
แต่ไม่ได้ลบค่า
arr.slice(0,-1)
เป็นทางออกที่ดีที่สุดสำหรับฉัน
splice()
กรณีที่สอง: pop()
.
ฉันมีอาเรย์ต่อไปนี้
var arr = [1,0,2];
ฉันต้องการลบองค์ประกอบสุดท้ายเช่น 2
ฉันใช้arr.slice(-1);
แต่ไม่ได้ลบค่า
arr.slice(0,-1)
เป็นทางออกที่ดีที่สุดสำหรับฉัน
splice()
กรณีที่สอง: pop()
.
คำตอบ:
ใช้รอยต่อ (ดัชนีวิธีการมากมาย)
arr.splice(-1,1)
[1].splice(-1, 1)
=>[1]
[0,1,2] -> [2]
[0,1]
หากเป็นกรณีนั้น[arr.pop()]
จะทำเคล็ดลับ
array.pop()
จะเปลี่ยนการแก้ไขarray
ในขณะที่slice(0, -1)
จะไม่ ป๊อปเร็วกว่าแน่นอน แต่อาจไม่เหมาะกับทุกความต้องการ
Array.prototype.pop ()ตามระเบียบของ JavaScript
let fruit = ['apple', 'orange', 'banana', 'tomato'];
let popped = fruit.pop();
console.log(popped); // "tomato"
console.log(fruit); // ["apple", "orange", "banana"]
คุณสามารถทำได้โดยใช้.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
พารามิเตอร์ดัชนีที่สกัด zero-based จากอาร์เรย์เริ่มต้น ดังนั้นให้พูดตามตัวอย่างข้างต้นถ้าเราทำอะไรเช่น
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)
หวังว่ามันจะช่วย!
arr
แต่จะส่งคืนอาร์เรย์ใหม่ซึ่งไม่รวมรายการสุดท้ายนั้น ดังที่เอกสารของ Mozilla บอกว่า: "วิธี slice () จะส่งคืนสำเนาตื้น ๆ ของส่วนหนึ่งของอาร์เรย์ไปยังวัตถุอาร์เรย์ใหม่"
arr.slice(0, -1)
คำตอบที่ดีที่สุดคือ
เรียนรู้จากตัวอย่าง:
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]
คุณจะต้องทำเช่นนี้เนื่องจากslice
จะไม่เปลี่ยนอาเรย์ดั้งเดิม
arr = arr.slice(-1);
หากคุณต้องการเปลี่ยนอาเรย์ดั้งเดิมคุณสามารถใช้splice
:
arr.splice(-1, 1);
หรือpop
:
arr.pop();
ฉันคิดว่า.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());
ซึ่งอาจไม่เป็นที่ต้องการ ...
หวังว่านี่จะช่วยคุณประหยัดเวลา
มีฟังก์ชั่นสำหรับคำอธิบายที่นี่ :
arr.pop();
คุณสามารถใช้ arr.pop()
สิ่งนี้จะลบรายการสุดท้ายของอาร์เรย์
var arr = [1,0,2];
var popped = arr.pop();//Now arr = [1,0] & popped = 2
เพียงใช้สิ่งต่อไปนี้สำหรับกรณีการใช้งานของคุณ:
var arr = [1,2,3,4];
arr.pop() //returns 4 as the value
arr // value 4 is removed from the **arr** array variable
เพียงแค่ทราบ เมื่อคุณใช้pop()
งานฟังก์ชั่นแม้ว่าบรรทัดจะคืนค่าไอเท็มที่ผุดออกอาเรย์ดั้งเดิมจะได้รับผลกระทบและองค์ประกอบที่ถูกดึงจะถูกลบออก
คุณสามารถทำได้สองวิธีโดยใช้splice()
:
arr.splice(-1,1)
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()
arr.slice(-1)
จะส่งคืนสำเนาขององค์ประกอบสุดท้ายของอาร์เรย์ แต่ปล่อยให้อาร์เรย์เดิมไม่มีการแก้ไข
ในการลบn
องค์ประกอบสุดท้ายออกจากอาร์เรย์ให้ใช้arr.splice(-n)
(สังเกตเครื่องหมาย "p" ใน "splice") ค่าส่งคืนจะเป็นอาร์เรย์ใหม่ที่มีองค์ประกอบที่ถูกลบ
เรียบง่ายขึ้นสำหรับn == 1
ใช้งานval = arr.pop()
var arr = [1,0,2];
arr.length--;
// ลบองค์ประกอบสุดท้าย // ต้องตรวจสอบว่า arr.length> 0
วิธีนี้มีประโยชน์มากกว่าในการลบและเก็บองค์ประกอบสุดท้ายของอาร์เรย์
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
เป็นที่น่าสังเกตว่า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
splice (ดัชนี howmany) - วิธีนี้ฟังดูดี แต่นี้howmanyจะทำงานเฉพาะสำหรับดัชนีอาร์เรย์บวก ในการลบสองรายการสุดท้ายหรือสามรายการให้ใช้ดัชนีของตัวเอง
ตัวอย่างเช่น splice (-2) เพื่อลบสองรายการสุดท้าย splice (-3) สำหรับการลบสามรายการสุดท้าย
ด้วย Lodash คุณสามารถใช้dropRightถ้าคุณไม่สนใจที่จะรู้ว่าองค์ประกอบใดถูกลบ:
_.dropRight([1, 2, 3])
// => [1, 2]
_.dropRight([1, 2, 3], 2);
// => [1]
var a = [1,2,3,4,5,6];
console.log(a.reverse().slice(1).reverse());
//Array(5) [ 1, 2, 3, 4, 5 ]
2019 โซลูชั่น ECMA5:
const new_arr = arr.reduce((d, i, idx, l) => idx < l.length - 1 ? [...d, i] : d, [])
ไม่ทำลายล้างซับทั่วไปและต้องการเพียงคัดลอกและวางที่ส่วนท้ายของอาร์เรย์
I would like to remove the last element
ไม่ได้เสียงเหมือนสิ่งที่คำถามเดิมต้องการ: ที่ต้องการการดำเนินการทำลาย / การกลายพันธุ์ในอาร์เรย์เดิม
บอกว่าคุณมี var arr = [1,0,2]
arr.splice(-1,1)
จะกลับมาหาคุณarray [1,0];
ในขณะที่ arr.slice(-1,1)
จะกลับมาหาคุณarray [2];
นี่เป็นวิธีที่ดีในการลบรายการสุดท้าย:
if (arr != null && arr != undefined && arr.length > 0) {
arr.splice(arr.length - 1, 1);
}
รายละเอียดของรอยต่อดังต่อไปนี้:
splice (startIndex จำนวน splice)
var stack = [1,2,3,4,5,6];
stack.reverse().shift();
stack.push(0);
การส่งออกจะได้รับ: อาร์เรย์ [0,1,2,3,4,5] สิ่งนี้จะช่วยให้คุณสามารถเก็บองค์ประกอบอาร์เรย์จำนวนเท่าเดิมในขณะที่คุณกดค่าใหม่
อีกวิธีคือกรองตามดัชนี:
arr.filter((element, index) => index < arr.length - 1);
หมายเหตุ: filter()
สร้างอาร์เรย์ใหม่ไม่เปลี่ยนรายการที่มีอยู่เดิม
หากคุณต้องการลบรายการ n ออกจากจุดสิ้นสุดของอาร์เรย์ใน javascript คุณสามารถใช้:
arr.splice(-n, n);