// ===
function uniqByKeepFirst(a, key) {
let seen = new Set();
return a.filter(item => {
let k = key(item);
return seen.has(k) ? false : seen.add(k);
});
}
function uniqByKeepLast(a, key) {
return [...new Map(a.map(x => [key(x), x])).values()]
}
//
data = [{
a: 1,
u: 1
}, {
a: 2,
u: 2
}, {
a: 3,
u: 1
}, {
a: 4,
u: 1
}, {
a: 5,
u: 1
}, {
a: 6,
u: 3
}, ];
// Lấy giá trị khác nhau đầu tiên trong một mảng Object
console.log(uniqByKeepFirst(data, it => it.u))
// Lấy giá trị giống nhau cuối cùng trong một mảng Object
console.log(uniqByKeepLast(data, it => it.u))