# Lấy giá trị khác nhau đầu tiên, cuối trong một mảng Object (ok)

```
// ===
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))
```

![](https://2726517656-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M1E4Gk2ppVKb4olmnun%2Fuploads%2FX8iTQcxbb5sheJCUMKKF%2FScreenshot_2.png?alt=media\&token=efc4d2d6-8be8-499b-b803-a11ec189a5fb)
