Return a new array with duplicate values removed, preserving first-occurrence order.
The idiomatic ES6 way uses a Set, which stores unique values: [...new Set(arr)]. For arrays of objects (deduping by a key) you use a Map or a seen-set of keys.
const unique = (arr) => [...new Set(arr)];
// Dedupe objects by a key:
function uniqueBy(arr, key) {
const seen = new Set();
return arr.filter((o) => {
if (seen.has(o[key])) return false;
seen.add(o[key]);
return true;
});
}Deduping is common when merging test data from multiple sources or when a paginated API returns overlapping records.
[...new Set(users)] does NOT remove duplicate user objects. Why?