Bạn có thể làm điều này bằng .slice()
phương pháp như:
arr.slice(0, -1); // returns [1,0]
Đây là một bản demo:
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>
thay vì làm:
arr.slice(-1); // returns [2]
Đây là một bản demo:
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>
Giải trình:-
Bây giờ cú pháp cơ bản của Array.prototype.slice()
hoặc trong slice()
phương thức ngắn là:
arr.slice([begin[, end]])
Đây,
các begin
tham số là không dựa trên chỉ số mà tại đó khai thác từ một mảng bắt đầu. Vì vậy, hãy nói dựa trên ví dụ trên nếu chúng ta làm một cái gì đó như
arr.slice(0) // returns [1,0,2]
nó sẽ trả về tất cả các phần tử mảng từ đầu chuỗi từ vị trí 0 và đó là [1,0,2]
. Tương tự, nếu chúng ta làm
arr.slice(1) // returns [0,2]
nó sẽ trở lại [0,2]
vì 0 ở vị trí 1 ở đây và mọi thứ sau đó. Bây giờ, trong trường hợp của bạn, bạn đã vượt qua một chỉ số âm nghĩa -1
là tham số bắt đầu, biểu thị phần bù từ cuối chuỗi. Vì vậy, slice(-1)
trong trường hợp của bạn trích xuất phần tử một mảng cuối cùng trong chuỗi và đó là2
( như chúng ta đã thấy trong bản demo ở trên ).
Bây giờ, hãy nói về end
tham số trong slice()
cú pháp phương thức ở đây. Nó lại là một chỉ số dựa trên zero mà tại đó trích xuất từ một mảng kết thúc. Vì vậy, giả sử chúng ta có một mảng như: -
var arr = [1, 0, 2, 5, 3, 9];
và chúng tôi muốn chỉ lấy các 2,5,3
phần tử trong mảng. Bây giờ, vị trí của 2
từ bắt đầu của chuỗi là 2
và cho yếu tố cuối cùng 3
nó là 4
. Chúng ta sẽ cần kết thúc việc trích xuất ở đây một vị trí 5, vì chúng ta cần lấy phần tử trước vị trí đó. Vì vậy, chúng tôi sẽ đơn giản thực hiện slice()
phương pháp ở đây như
arr.slice(2, 5) // returns [2,5,3]
Trong trường hợp của bạn, chúng tôi đã triển khai -1
như là tham số cuối, vì vậy mã của chúng tôi giống như
arr.slice(0, -1) // returns [1,0]
Là một chỉ số âm, end
chỉ ra một phần bù từ cuối chuỗi. Vì vậy, slice(0,-1)
trích xuất phần tử đầu tiên thông qua phần tử thứ hai đến cuối cùng trong chuỗi. Vì vậy, chúng tôi nhận được đầu ra mong muốn. Chúng ta cũng có thể làm như
arr.slice(0, 2) // returns [1,0]
chúng ta sẽ nhận được cùng một đầu ra. Nhưng, tôi đã sử dụng -1
ở đây vì nó dễ thực hiện hơn ngay cả đối với một mảng dài như
[0,2,3,1,2,9,3,6,3,9,1,0,2,9,0,1,1,2,3,4,7,9,1]
Nếu bạn chỉ muốn xóa phần tử cuối cùng, bạn không muốn ngồi và tính toán vị trí của 9 phần cuối ở đây và làm như thế nào arr.slice(0, 22)
. Sau đó, bạn có thể thực hiện logic chỉ mục phủ định ở đây & làm
arr.slice(0, -1) // same result as arr.slice(0, 22)
Hy vọng nó giúp!