3 cách xóa phần tử bị duplicate trong mảng

6986

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

  5 cách chia một mảng lớn thành nhiều mảng nhỏ trong Javascript
  Bạn hoàn toàn có thể xây dựng cho mình một Mạng Xã Hội & Kinh Doanh trên đó
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:

Xem thêm các việc làm Developer hấp dẫn tại TopDev