Remove all of the duplicate numbers in an array of numbers [duplicate]
Using Set and Array.from()
let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];console.log(Array.from(new Set(arr)));
Alternate using regex
regex explanation here
let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];let res = arr .join(',') .replace(/(\b,\w+\b)(?=.*\1)/ig, '') .split(',') .map(Number);console.log(res);
Alternate using objects
let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];let obj = arr.reduce((acc, val) => Object.assign(acc, { [val]: val}), {});console.log(Object.values(obj));
Just use a simple array.filter
one-liner:
let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];let finalResult = arr.filter((e, i, a) => a.indexOf(e) == i).sort(function(a, b){return a - b});console.log(finalResult);
You could use another filter
statement if you wanted the second result:
let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];let finalResult = arr.filter((e, i, a) => a.filter(f => f == e).length == 1).sort(function(a, b){return a - b});console.log(finalResult);
For the first part you can use Set()
and Spread Syntax to remove duplicates.
let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];let res = [...new Set(arr)]console.log(res)
For the second part you can use reduce()
let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];//to get the object with count of each number in array.let obj = arr.reduce((ac,a) => { //check if number doesnot occur before then set its count to 1 if(!ac[a]) ac[a] = 1; //if number is already in object increase its count else ac[a]++; return ac;},{})//Using reduce on all the keys of object means all numbers.let res = Object.keys(obj).reduce((ac,a) => { //check if count of current number 'a' is `1` in the above object then add it into array if(obj[a] === 1) ac.push(+a) return ac;},[])console.log(res)