- vừa được xem lúc

Xóa phần tử trong Array JavaScript

0 0 49

Người đăng: Nguyen Quoc Anh

Theo Viblo Asia

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.

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 ways: làm thay đổi mảng gốc.
  • Immutable ways: không làm thay đổi mảng gốc.

Mutable ways

Loạ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ụ:

const arr = ["a", "b", "c", "d"];
console.log(arr); // => (4) ["a", "b", "c", "d"] const item = arr.pop();
console.log(arr); // => (3) ["a", "b", "c"]
console.log(item); // => 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ụ:

const arr = ["a", "b", "c", "d"];
console.log(arr); // => (4) ["a", "b", "c", "d"] const item = arr.shift();
console.log(arr); // => (3) ["b", "c", "d"]
console.log(item); // => a

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à:

array.splice(start, n)

Trong đó:

  • start: đơn giản là vị trí phần tử bắt đầu bị loại bỏ khỏi mảng.
  • n: là số lượng phần tử bị loại bỏ.
  • Giá trị trả về chính là mảng các phần tử còn lại.

Ví dụ:

const arr = ['a', 'b', 'c', 'd'];
console.log(arr); // => (4) ["a", "b", "c", "d"] const removed = arr.splice(1, 2);
console.log(arr); // => (2) ["a", "d"]
console.log(removed); // => (2) ["b", "c"]

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 ways

Loạ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ụ:

const arr = ["a", "b", "c", "d", "e"];
console.log(arr); // => (5) ["a", "b", "c", "d", "e"] const i = 2;
const a1 = arr.slice(0, i);
const a2 = arr.slice(i + 1, arr.length);
const new_arr = a1.concat(a2); console.log(arr); // => (5) ["a", "b", "c", "d", "e"]
console.log(new_arr); // => (4) ["a", "b", "d", "e"]

Ngoài ra, bạn có thể sử dụng spread operator để ghép 2 array lại với nhau như sau:

const new_arr = [...a1, ...a2];

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ụ:

const arr = ["a", "b", "c", "d", "e"];
console.log(arr); // => (5) ["a", "b", "c", "d", "e"] const i = 1;
const amount = 2;
const a1 = arr.slice(0, i);
const a2 = arr.slice(i + amount, arr.length);
const new_arr = a1.concat(a2); console.log(arr); // => (5) ["a", "b", "c", "d", "e"]
console.log(new_arr); // => (3) ["a", "d", "e"]

Đ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ụ:

const arr = ["a", "b", "c", "d", "e"];
console.log(arr); // => (5) ["a", "b", "c", "d", "e"] const valueToRemove = "b";
const new_arr = arr.filter(item => item !== valueToRemove); console.log(arr); // => (5) ["a", "b", "c", "d", "e"]
console.log(new_arr); // => (4) ["a", "c", "d", "e"]

Đ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ụ:

const arr = ["a", "b", "c", "d", "e"];
console.log(arr); // => (5) ["a", "b", "c", "d", "e"] const valuesToRemove = ["b", "e"];
const new_arr = arr.filter(item => !valuesToRemove.includes(item)); console.log(arr); // => (5) ["a", "b", "c", "d", "e"]
console.log(new_arr); // => (3) ["a", "c", "d"]

Lời kết

  • Trên đây là một số cách để loại bỏ một hoặc nhiều phần tử ra khỏi Array trong JavaScript, các bạn hãy tùy trường hợp mà sử dụng cho hợp lý vào dự án của mình, cám ơn các bạn đã theo dõi!
  • Tham khảo: 9 Ways to Remove Elements From A JavaScript Array

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 528

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 406

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 770

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 367

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 459

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 436