Array.prototype.shift()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức shift() của các instance Array xóa phần tử đầu tiên
khỏi mảng và trả về phần tử đó. Phương thức này thay đổi độ dài của mảng.
Try it
const array = [1, 2, 3];
const firstElement = array.shift();
console.log(array);
// Expected output: Array [2, 3]
console.log(firstElement);
// Expected output: 1
Syntax
shift()
Parameters
Không có.
Return value
Phần tử đã bị xóa khỏi mảng; undefined nếu mảng rỗng.
Description
Phương thức shift() dịch chuyển tất cả các giá trị sang trái 1 vị trí và giảm độ dài đi 1, kết quả là phần tử đầu tiên bị xóa. Nếu thuộc tính length bằng 0, undefined sẽ được trả về.
Phương thức pop() có hành vi tương tự shift(), nhưng áp dụng cho phần tử cuối cùng của mảng.
Phương thức shift() là một mutating method. Nó thay đổi độ dài và nội dung của this. Trong trường hợp bạn muốn giữ nguyên giá trị của this nhưng vẫn trả về một mảng mới với phần tử đầu tiên đã bị xóa, bạn có thể dùng arr.slice(1) thay thế.
Phương thức shift() là generic. Nó chỉ yêu cầu giá trị this có thuộc tính length và các thuộc tính được đánh chỉ số nguyên. Mặc dù chuỗi cũng giống như mảng, phương thức này không phù hợp để áp dụng lên chúng vì chuỗi là bất biến.
Examples
>Xóa một phần tử khỏi mảng
Đoạn code sau hiển thị mảng myFish trước và sau khi xóa phần tử đầu tiên. Nó cũng hiển thị phần tử đã bị xóa:
const myFish = ["angel", "clown", "mandarin", "surgeon"];
console.log("myFish before:", myFish);
// myFish before: ['angel', 'clown', 'mandarin', 'surgeon']
const shifted = myFish.shift();
console.log("myFish after:", myFish);
// myFish after: ['clown', 'mandarin', 'surgeon']
console.log("Removed this element:", shifted);
// Removed this element: angel
Sử dụng phương thức shift() trong vòng lặp while
Phương thức shift() thường được dùng trong điều kiện bên trong vòng lặp while. Trong ví dụ sau, mỗi vòng lặp sẽ xóa phần tử tiếp theo khỏi mảng, cho đến khi mảng trống:
const names = ["Andrew", "Tyrone", "Paul", "Maria", "Gayatri"];
while (typeof (i = names.shift()) !== "undefined") {
console.log(i);
}
// Andrew, Tyrone, Paul, Maria, Gayatri
Gọi shift() trên các đối tượng không phải mảng
Phương thức shift() đọc thuộc tính length của this. Nếu độ dài đã chuẩn hóa bằng 0, length được đặt lại thành 0 (trong khi trước đó nó có thể là âm hoặc undefined). Ngược lại, thuộc tính tại vị trí 0 được trả về, và các thuộc tính còn lại được dịch chuyển sang trái một vị trí. Thuộc tính tại length - 1 bị xóa, và thuộc tính length được giảm đi một.
const arrayLike = {
length: 3,
unrelated: "foo",
2: 4,
};
console.log(Array.prototype.shift.call(arrayLike));
// undefined, because it is an empty slot
console.log(arrayLike);
// { '1': 4, length: 2, unrelated: 'foo' }
const plainObj = {};
// There's no length property, so the length is 0
Array.prototype.shift.call(plainObj);
console.log(plainObj);
// { length: 0 }
Specifications
| Thông số kỹ thuật |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.shift> |