Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
141
rated 0 times [  148] [ 7]  / answers: 1 / hits: 68509  / 8 Years ago, fri, may 13, 2016, 12:00:00

I'm trying to strip the duplicate array values from my current array. And I'd like to store the fresh list (list without duplicates) into a new variable.



var names = [Daniel,Lucas,Gwen,Henry,Jasper,Lucas,Daniel];

const uniqueNames = [];
const namesArr = names.filter((val, id) => {
names.indexOf(val) == id; // this just returns true
});


How can I remove the duplicated names and place the non-duplicates into a new variable?



ie: uniqueNames would return...



[Daniel,Lucas,Gwen,Henry,Jasper] 


(I'm using react jsx) Thank you!


More From » reactjs

 Answers
17

You can do it in a one-liner



const uniqueNames = Array.from(new Set(names));


// it will return a collection of unique items



Note that @Wild Widow pointed out one of your mistake - you did not use the return statement. (it sucks when we forget, but it happens!)



I will add to that that you code could be simplified and the callback could be more reusable if you take into account the third argument of the filter(a,b,c) function - where c is the array being traversed. With that said you could refactor your code as follow:



const uniqueNames = names.filter((val, id, array) => {
return array.indexOf(val) == id;
});


Also, you won't even need a return statement if you use es6



const uniqueNames = names.filter((val,id,array) => array.indexOf(val) == id);

[#62182] Thursday, May 12, 2016, 8 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
amberlykaliac

Total Points: 415
Total Questions: 100
Total Answers: 85

Location: Wallis and Futuna
Member since Tue, Mar 30, 2021
3 Years ago
;