Diễn đàn PHP - HTML - CSS Loại bỏ các phần tử trùng lặp trong một mảng các object với Javascript

Loại bỏ các phần tử trùng lặp trong một mảng các object với Javascript

1,074 lượt xem
15/11/2021 10:55 Bình luận (4)
Hầu hết các ngôn ngữ khác đều có hàm loại bỏ các phần tử/thuộc tính trùng lặp khỏi mảng/khối (tui tự thắc mắc liệu nó có loại bỏ các khối trùng trong mảng không?)
Thế nhưng, javascript méo có :[
Mặc dù có thể loại bỏ các phần tử trùng lặp bằng 1 dòng code ngắn
array.filter((v, i) => array.indexOf(v) === i)

Tuy nhiên đoạn code trên không thể loại bỏ các khối giống nhau trong mảng
Thế, làm thế nào?
Câu trả lời easy như sau:

function uniqueArrayOfObjects (arrayOfObjects, callback) {
 if (typeof callback !== 'function') callback = compare2Objects
 return arrayOfObjects.filter((item, index) => index == arrayOfObjects.findIndex(x => callback(item, x)))
}
function compare2Objects (a, b) {
 return JSON.stringify(a) === JSON.stringify(b)
}

let data = [
 { name: 'Dat', age: '??' },
 { name: 'Dat', age: 'chua 18~' },
 { name: 'Dai', age: '??' },
 { name: 'Trum', age: '??' },
 { name: 'Ken', age: '??' },
 { name: 'Dai', age: '??' }
]

console.log(uniqueArrayOfObjects(data))

console.log("

với callback
", uniqueArrayOfObjects(data, (a, b) => {
 return a.name == b.name
}))

Đọc code tự hiểu nhá, tui lười giải thích 31
Gill, Thanh Tam đã thích bài viết này
BÌNH LUẬN (4)
Avatar
dat
Tác giả
E hèm, khuyến khích các bạn dùng code này nên viết callback nhá, sẽ nhanh hơn so với để không vậy, thậm chí có thể nhanh hơn 100 lần42
Avatar
Dai
42
42
42

Viết bình luận

Vui lòng đăng nhập để tham gia bình luận.

Trang chủ Tìm kiếm Trò chuyện Đăng nhập