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
- V VIETNAM MOBILE DAY 2022 – We Connect, Sân Chơi Quen Thuộc Của Cộng Đồng Công Nghệ Việt Nam Đã Trở Lại
- R Renoleap DevOps Bootcamp – Khóa Học Miễn Phí Trong 13 Tuần Tại Việt Nam.
- S Scrum Master là gì? Tìm hiểu các vai trò chính của Scrum Master
- SHIFT ASIA Quản Lý Dự Án Hiệu Quả Với Công Cụ GITLAB
- C Cách Trình Duyệt Hiển Thị Website Của Bạn
- D Data Warehouse Là Gì? Tổng Quan Về Kho Dữ Liệu
- R RMIT DÀNH 4 HỌC BỔNG BẬC THẠC SĨ CHO HAI CHƯƠNG TRÌNH MỚI
- T Team Leader là gì? Những kỹ năng nào mà một Team Leader cần có?
- P Phương pháp lập Kế hoạch tuyển dụng
- v var, let và const trong ES6