Write a function findDuplicates(arr) that returns an array of values that appear more than once in the input array, each value listed only once, in the order they first repeat. For example, findDuplicates([1,2,3,2,4,1]) should return [2,1].
function findDuplicates(arr) {
// your code here
}
Rules:
Plain JavaScript only, no libraries
Return values in order of first repeat, not first appearance
Each duplicate value should appear only once in the result
Solution should be about 3 to 10 lines
Post your solution as a reply. Answer goes up in about a day.
function findDuplicates(arr) {
let unique = new Set();
let duplicates = new Set();
for (let i = 0; i < arr.length; i++) {
let current = arr[i];
if (!unique.has(current)) {
unique.add(current);
} else {
duplicates.add(current);
}
}
return duplicates;
}
console.log(findDuplicates([1,2,3,2,4,1]));
function findDuplicates(arr) {
let unique = new Set();
let duplicates = new Set();
for (let i = 0; i < arr.length; i++) {
let current = arr[i];
if (!unique.has(current)) {
unique.add(current);
} else {
duplicates.add(current);
}
}
// Convert the Set to an Array before returning
return [...duplicates];
}
console.log(findDuplicates([1, 2, 3, 2, 4, 1]));