3 cách xóa phần tử bị duplicate trong mảng
Bài viết được sự cho phép của tác giả Lưu Bình An
Nếu phần tử trong mảng chỉ là kiểu primitive thì rất đơn giản nếu muốn xóa tất cả phần tự bị trùng
const values = ['a','b','c','a']
const uniqueValues = [...new Set(values)];
Còn nếu phần tử trong mảng là object
thì ta làm sao?
const members = [
{
first: 'Jane',
last: 'Bond',
id: '10yejma',
},
{
first: 'Lars',
last: 'Croft',
id: '1hhs0k2',
},
{
first: 'Jane',
last: 'Bond',
id: '1y15hhu',
},
];
Cách 1: tạo mảng mới ko chứa phần tử bị trùng
function containsMember(memberArray, member) {
return memberArray.find(m => m.first === member.first && m.last === member.last)
}
const uniqueValues = [];
for (const m of members) {
if (!containsMember(uniqueValues, m)) {
uniqueValues.push(m);
}
}
Cách 2: dùng filter()
function getIndexOfMember(memberArray, member) {
return memberArray.findIndex(m => m.first === member.first && m.last === member.last)
}
const uniqueValues = members.filter((m, index, ms) => getIndexOfMember(ms, m) === index);
Cách 3: sử dụng Map
const uniqueKeyToMember = new Map(members.map(m => [m.first+'\t'+m.last, m]));
const uniqueMembers = [...uniqueKeyToMember.values()];
Eliminating duplicate objects: three approaches
Bài viết gốc được đăng tải tại vuilaptrinh.com
Có thể bạn quan tâm:
- 5 cách chia một mảng lớn thành nhiều mảng nhỏ trong Javascript
- Sử dụng mảng đúng cách trong PHP – Bạn đã bao giờ nghĩ?
- Tìm hiểu phương thức slice của mảng trong JavaScript
Xem thêm các việc làm Developer hấp dẫn tại TopDev
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- i iOS 18 có gì mới? Có nên cập nhật iOS 18 cho iPhone của bạn?
- G Gamma AI là gì? Cách tạo slide chuyên nghiệp chỉ trong vài phút
- P Power BI là gì? Vì sao doanh nghiệp nên sử dụng PBI?
- K KICC HCMC x TOPDEV – Bước đệm nâng tầm sự nghiệp cho nhân tài IT Việt Nam
- T Trello là gì? Cách sử dụng Trello để quản lý công việc
- T TOP 10 SỰ KIỆN CÔNG NGHỆ THƯỜNG NIÊN KHÔNG NÊN BỎ LỠ
- T Tìm hiểu Laptop AI – So sánh Laptop AI với Laptop thường
- M MySQL vs MS SQL Server: Phân biệt hai RDBMS phổ biến nhất
- S SearchGPT là gì? Công cụ tìm kiếm mới có thể đánh bại Google?