Xóa phần tử trong Array JavaScript là một bài toán mà hầu hết mọi người đều gặp phải khi lập trình JavaScript. Để giải quyết bài toán này, JavaScript cung cấp rất nhiều giải pháp khác nhau. Mỗi giải pháp lại có một ưu, nhược điểm riêng và phù hợp với từng bài toán cụ thể. Vì vậy, bài viết này mình sẽ tổng hợp lại các cách để loại bỏ một hoặc nhiều phần tử ra khỏi Array trong JavaScript. Show Về cơ bản, các cách mà mình trình bày sau đây sẽ được chia ra làm 2 loại:
Mutable waysLoại bỏ phần tử cuối cùng với pop()Phương thức pop() loại bỏ phần tử cuối cùng của mảng và trả về giá trị phần tử đó. Nếu mảng rỗng thì giá trị trả về sẽ là undefined. Ví dụ:
Loại bỏ phần tử đầu tiên với shift()Phương thức shift() loại bỏ phần tử đầu tiên của mảng và trả về giá trị phần tử đó. Nếu mảng rỗng thì giá trị trả về sẽ là undefinded. Ví dụ:
Loại bỏ một hay nhiều phần tử tại vị trí xác định với splice()Thực tế, phương thức splice() không chỉ loại bỏ một hay nhiều phần tử của Array mà nó còn có thể thêm phần tử vào Array. Tuy nhiên, trong phạm vi bài viết này, mình sẽ chỉ đề cập tới vấn đề loại bỏ phần tử khỏi Array. Cú pháp sử dụng splice() để loại bỏ phần tử của Array Javascript là:
Trong đó:
Ví dụ:
Trong đoạn code trên, câu lệnh arr.splice(1, 2) loại bỏ phần tử khỏi mảng bắt đầu từ vị trí có chỉ số là 1 (ứng với 'b') và số phần tử bị loại bỏ là 2. Do đó, 2 phần tử bị loại bỏ sẽ là 'b' và 'c'. Vì vậy, mảng các phần tử bị loại bỏ là ["b", "c"] và mảng ban đầu trở thành ["a", "d"]. Immutable waysLoại bỏ phần tử trong mảng dựa vào chỉ số với slice() và concat()Giả sử mình cần loại bỏ 1 phần tử ở chỉ số i khỏi mảng arr. Khi đó, ý tưởng để giải quyết bài toán này là: mình sẽ sử dụng phương thức slice() 2 lần để copy từ mảng ban đầu ra 2 mảng con mới (không làm thay đổi mảng ban đầu). Lần thứ nhất, mình copy ra các phần tử từ vị trí 0 đến vị trí i - 1. Lần thứ hai, mình copy ra các phần tử từ vị trí i + 1 đến phần tử cuối cùng. Sau đó, mình sẽ sử dụng phương thức concat() để ghép 2 mảng con đó lại thành 1 mảng duy nhất thỏa mãn yêu cầu bài toán. Ví dụ:
Ngoài ra, bạn có thể sử dụng spread operator để ghép 2 array lại với nhau như sau:
Trên đây là cách loại bỏ một phần tử khỏi mảng, tuy nhiên bạn cũng có thể áp dụng nó để loại bỏ nhiều phần tử dựa vào chỉ số và số lượng phần tử. Ví dụ:
Đoạn code trên loại bỏ 2 phần tử từ vị trí có chỉ số 1 trong mảng, đó là "b" và "c". Loại bỏ phần tử trong mảng dựa vào giá trị với filter()Trong trường hợp bạn biết giá trị của phần tử muốn loại bỏ khỏi mảng thì có thể sử dụng phương thức filter(). Phương thức này sẽ tạo ra một mảng mới chứa tất cả những phần tử thỏa mãn testing function. Ví dụ:
Đoạn code trên sẽ tạo ra một mảng mới bao gồm các phần tử có giá trị khác với giá trị cần remove là "b". Dĩ nhiên, bạn có thể dùng cách này để loại bỏ nhiều phần tử. Ví dụ:
Lời kết
|