Bài đăng này sẽ thảo luận về cách xóa lần xuất hiện đầu tiên của một giá trị đã cho khỏi một mảng trong JavaScript
1. Sử dụng chức năng Array.prototype.splice[]
Phương thức splice[]
trong JavaScript thường được sử dụng để thêm hoặc xóa các phần tử tại chỗ khỏi một mảng. Ý tưởng là tìm một chỉ mục của phần tử cần xóa khỏi một mảng rồi xóa chỉ mục đó bằng phương thức splice[] .
1
2
3
4
5
6
7
8
9
10
11
12
13
Mảng. nguyên mẫu. xóa = hàm[giá trị] {
cái này. mối nối[cái này. indexOf[giá trị], 1];
}
var arr = [1, 2, 4, 2, 5];
var item = 2;
mảng. xóa[mục];
bảng điều khiển. log[arr];
/*
đầu ra. [ 1, 4, 2, 5 ]
*/
Tải xuống Chạy mã
Lưu ý rằng phương thức indexOf[]
trả về -1
nếu không tìm thấy giá trị đã cho trong mảng và mối nối sẽ xóa phần tử cuối cùng của mảng. Để xử lý trường hợp này, nên kiểm tra sự hiện diện của các phần tử trước khi gọi phương thức splice
, như minh họa bên dưới.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Mảng. nguyên mẫu. xóa = hàm[giá trị] {
var index = this.indexOf[giá trị];
nếu [chỉ mục . == -1] {
cái này. mối nối[chỉ mục, 1];
}
}
var arr = [1, 2, 4, 2, 5];
var item = 2;
mảng. xóa[mục];
bảng điều khiển. log[arr];
/*
đầu ra. [ 1, 4, 2, 5 ]
*/
Tải xuống Chạy mã
2. Sử dụng toán tử Trải rộng ES6 với cắt lát
Với ES6, bạn có thể sử dụng toán tử Trải rộng với phép cắt để tạo một mảng mới với phần tử đã bị xóa. Ý tưởng là chia mảng thành hai mảng con xung quanh phần tử cần loại bỏ. Sau đó hợp nhất cả hai mảng con bằng cú pháp trải rộng. Ví dụ mã sau đây cho thấy cách thực hiện điều này
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
hàm xóa[mảng, item]
{
var index = arr.indexOf[mục];
return [
// một phần của mảng trước mục đã cho
. . . mảng. lát[0, chỉ mục],
// một phần của mảng sau mục đã cho
. . . mảng. lát[chỉ mục + 1]
];
}
var arr = [1, 2, 4, 2, 5];
var item = 2;
arr = xóa[arr, item];
bảng điều khiển. log[arr];
/*
đầu ra. [ 1, 4, 2, 5 ]
*/
Tải xuống Chạy mã
3. Sử dụng toán tử Xóa
Toán tử xóa JavaScript xóa một thuộc tính khỏi một đối tượng. Nếu được gọi trên một mảng arr
như delete arr[i]
, nó sẽ thay thế giá trị có tại chỉ mục i
bằng một giá trị undefined
. Nói cách khác, nó để lại một ô trống tại chỉ mục i
. Lưu ý rằng việc sử dụng xóa không làm giảm độ dài của mảng hoặc cập nhật chỉ mục của các phần tử khác. Điều này được thể hiện dưới đây