Remove all of the duplicate numbers in an array of numbers [duplicate]Get all unique values in a JavaScript array (remove duplicates)Get all non-unique values (i.e.: duplicate/more than one occurrence) in an arrayRemove occurrences of duplicate words in a stringremove all elements that occur more than once from arrayCreate ArrayList from arrayHow do I remove a property from a JavaScript object?How do I check if an array includes an object in JavaScript?How to append something to an array?How to replace all occurrences of a string in JavaScriptLoop through an array in JavaScriptHow to check if an object is an array?How do I remove a particular element from an array in JavaScript?Remove duplicate values from JS arrayFor-each over an array in JavaScript?

What is the English pronunciation of "pain au chocolat"?

How does electrical safety system work on ISS?

What (the heck) is a Super Worm Equinox Moon?

Did the UK lift the requirement for registering SIM cards?

Is this part of the description of the Archfey warlock's Misty Escape feature redundant?

Unable to get dependencies from jcenter with a new project

C++ copy constructor called at return

Stack Interview Code methods made from class Node and Smart Pointers

What to do when eye contact makes your coworker uncomfortable?

Is there a nicer/politer/more positive alternative for "negates"?

Does grappling negate Mirror Image?

How to make money from a browser who sees 5 seconds into the future of any web page?

Review your own paper in Mathematics

Is it ethical to recieve stipend after publishing enough papers?

What do you call a word that can be spelled forward or backward forming two different words

Giving feedback to someone without sounding prejudiced

Permission on Database

Does the reader need to like the PoV character?

15% tax on $7.5k earnings. Is that right?

Is it allowed to activate the ability of multiple planeswalkers in a single turn?

Why should universal income be universal?

How to preserve electronics (computers, iPads and phones) for hundreds of years

Make a Bowl of Alphabet Soup

Why Shazam when there is already Superman?



Remove all of the duplicate numbers in an array of numbers [duplicate]


Get all unique values in a JavaScript array (remove duplicates)Get all non-unique values (i.e.: duplicate/more than one occurrence) in an arrayRemove occurrences of duplicate words in a stringremove all elements that occur more than once from arrayCreate ArrayList from arrayHow do I remove a property from a JavaScript object?How do I check if an array includes an object in JavaScript?How to append something to an array?How to replace all occurrences of a string in JavaScriptLoop through an array in JavaScriptHow to check if an object is an array?How do I remove a particular element from an array in JavaScript?Remove duplicate values from JS arrayFor-each over an array in JavaScript?













11
















This question already has an answer here:



  • Get all unique values in a JavaScript array (remove duplicates)

    66 answers



I received this question for practice and the wording confused me, as I see 2 results that it might want.



And either way, I'd like to see both solutions.



For example, if I have an array:



let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];


I'm taking this as wanting the final result as either:



let finalResult = [1, 2, 3, 4, 5, 8, 9, 10];


OR:



let finalResult = [1, 9, 10];


The difference between the two being, one just removes any duplicate numbers and leaves the rest and the second just wants any number that isn't a duplicate.



Either way, I'd like to write two functions that does one of each.



This, given by someone else gives my second solution.



let elems = ,

arr2 = arr.filter(function (e)
if (elems[e] === undefined)
elems[e] = true;
return true;

return false;
);
console.log(arr2);


I'm not sure about a function for the first one (remove all duplicates).










share|improve this question















marked as duplicate by Jared Smith, pushkin, BlueRaja - Danny Pflughoeft, the_lotus, Moira yesterday


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.


















  • If you're using lodash, you can use _.uniq()

    – BlueRaja - Danny Pflughoeft
    yesterday






  • 1





    Further, this is asking for the inverse of Get all non-unique values (i.e.: duplicate/more than one occurrence) in an array. Finally, this post is asking two separate questions and both have good answers elsewhere already.

    – Søren D. Ptæus
    yesterday












  • To answer the question "which one is it" in a comment-answer: if you're asked to remove duplicates, I believe you should understand the first variant. The second variant removes all element that have duplicates, meaning the "original" value AND its duplicates.

    – Pierre Arlaud
    yesterday















11
















This question already has an answer here:



  • Get all unique values in a JavaScript array (remove duplicates)

    66 answers



I received this question for practice and the wording confused me, as I see 2 results that it might want.



And either way, I'd like to see both solutions.



For example, if I have an array:



let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];


I'm taking this as wanting the final result as either:



let finalResult = [1, 2, 3, 4, 5, 8, 9, 10];


OR:



let finalResult = [1, 9, 10];


The difference between the two being, one just removes any duplicate numbers and leaves the rest and the second just wants any number that isn't a duplicate.



Either way, I'd like to write two functions that does one of each.



This, given by someone else gives my second solution.



let elems = ,

arr2 = arr.filter(function (e)
if (elems[e] === undefined)
elems[e] = true;
return true;

return false;
);
console.log(arr2);


I'm not sure about a function for the first one (remove all duplicates).










share|improve this question















marked as duplicate by Jared Smith, pushkin, BlueRaja - Danny Pflughoeft, the_lotus, Moira yesterday


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.


















  • If you're using lodash, you can use _.uniq()

    – BlueRaja - Danny Pflughoeft
    yesterday






  • 1





    Further, this is asking for the inverse of Get all non-unique values (i.e.: duplicate/more than one occurrence) in an array. Finally, this post is asking two separate questions and both have good answers elsewhere already.

    – Søren D. Ptæus
    yesterday












  • To answer the question "which one is it" in a comment-answer: if you're asked to remove duplicates, I believe you should understand the first variant. The second variant removes all element that have duplicates, meaning the "original" value AND its duplicates.

    – Pierre Arlaud
    yesterday













11












11








11


2







This question already has an answer here:



  • Get all unique values in a JavaScript array (remove duplicates)

    66 answers



I received this question for practice and the wording confused me, as I see 2 results that it might want.



And either way, I'd like to see both solutions.



For example, if I have an array:



let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];


I'm taking this as wanting the final result as either:



let finalResult = [1, 2, 3, 4, 5, 8, 9, 10];


OR:



let finalResult = [1, 9, 10];


The difference between the two being, one just removes any duplicate numbers and leaves the rest and the second just wants any number that isn't a duplicate.



Either way, I'd like to write two functions that does one of each.



This, given by someone else gives my second solution.



let elems = ,

arr2 = arr.filter(function (e)
if (elems[e] === undefined)
elems[e] = true;
return true;

return false;
);
console.log(arr2);


I'm not sure about a function for the first one (remove all duplicates).










share|improve this question

















This question already has an answer here:



  • Get all unique values in a JavaScript array (remove duplicates)

    66 answers



I received this question for practice and the wording confused me, as I see 2 results that it might want.



And either way, I'd like to see both solutions.



For example, if I have an array:



let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];


I'm taking this as wanting the final result as either:



let finalResult = [1, 2, 3, 4, 5, 8, 9, 10];


OR:



let finalResult = [1, 9, 10];


The difference between the two being, one just removes any duplicate numbers and leaves the rest and the second just wants any number that isn't a duplicate.



Either way, I'd like to write two functions that does one of each.



This, given by someone else gives my second solution.



let elems = ,

arr2 = arr.filter(function (e)
if (elems[e] === undefined)
elems[e] = true;
return true;

return false;
);
console.log(arr2);


I'm not sure about a function for the first one (remove all duplicates).





This question already has an answer here:



  • Get all unique values in a JavaScript array (remove duplicates)

    66 answers







javascript arrays duplicates






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited yesterday









pushkin

4,323112954




4,323112954










asked yesterday









mph85mph85

1229




1229




marked as duplicate by Jared Smith, pushkin, BlueRaja - Danny Pflughoeft, the_lotus, Moira yesterday


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.









marked as duplicate by Jared Smith, pushkin, BlueRaja - Danny Pflughoeft, the_lotus, Moira yesterday


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.














  • If you're using lodash, you can use _.uniq()

    – BlueRaja - Danny Pflughoeft
    yesterday






  • 1





    Further, this is asking for the inverse of Get all non-unique values (i.e.: duplicate/more than one occurrence) in an array. Finally, this post is asking two separate questions and both have good answers elsewhere already.

    – Søren D. Ptæus
    yesterday












  • To answer the question "which one is it" in a comment-answer: if you're asked to remove duplicates, I believe you should understand the first variant. The second variant removes all element that have duplicates, meaning the "original" value AND its duplicates.

    – Pierre Arlaud
    yesterday

















  • If you're using lodash, you can use _.uniq()

    – BlueRaja - Danny Pflughoeft
    yesterday






  • 1





    Further, this is asking for the inverse of Get all non-unique values (i.e.: duplicate/more than one occurrence) in an array. Finally, this post is asking two separate questions and both have good answers elsewhere already.

    – Søren D. Ptæus
    yesterday












  • To answer the question "which one is it" in a comment-answer: if you're asked to remove duplicates, I believe you should understand the first variant. The second variant removes all element that have duplicates, meaning the "original" value AND its duplicates.

    – Pierre Arlaud
    yesterday
















If you're using lodash, you can use _.uniq()

– BlueRaja - Danny Pflughoeft
yesterday





If you're using lodash, you can use _.uniq()

– BlueRaja - Danny Pflughoeft
yesterday




1




1





Further, this is asking for the inverse of Get all non-unique values (i.e.: duplicate/more than one occurrence) in an array. Finally, this post is asking two separate questions and both have good answers elsewhere already.

– Søren D. Ptæus
yesterday






Further, this is asking for the inverse of Get all non-unique values (i.e.: duplicate/more than one occurrence) in an array. Finally, this post is asking two separate questions and both have good answers elsewhere already.

– Søren D. Ptæus
yesterday














To answer the question "which one is it" in a comment-answer: if you're asked to remove duplicates, I believe you should understand the first variant. The second variant removes all element that have duplicates, meaning the "original" value AND its duplicates.

– Pierre Arlaud
yesterday





To answer the question "which one is it" in a comment-answer: if you're asked to remove duplicates, I believe you should understand the first variant. The second variant removes all element that have duplicates, meaning the "original" value AND its duplicates.

– Pierre Arlaud
yesterday












9 Answers
9






active

oldest

votes


















19














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));








share|improve this answer
































    14














    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);








    share|improve this answer

























    • You could also add .sort() to sort them by numerical order: .sort(function(a, b)return a - b) on finalresult

      – Mukyuu
      yesterday











    • Yes @Mukyuu, that would also be useful

      – Jack Bashford
      yesterday






    • 5





      Worth pointing out that the run time of this approach will be quadratic on the size of the input, which is probably not great unless the input arrays are known to be always fairly small.

      – Joe Lee-Moyet
      yesterday






    • 1





      Most voted with multiple array#filter, array#sort and array#indexOf... That is not performant

      – Yosvel Quintero
      yesterday












    • Do note that the .sort() is not necessary - the end result without the sort is still an array without any duplicate items, just in the same order as the original array. (It does make it exactly match the finalResult variable in the question though.)

      – Florrie
      yesterday


















    10














    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)








    share|improve this answer

























    • nice appreciate that, that 2nd one looks crazy. I'm assuming the time complexity for would be less than ideal compared to other results?

      – mph85
      yesterday











    • @mph85 Yes its a little complex because it doesnot go through the array again and again instead it just store all the result obj and then filter it.Its better regarding performance

      – Maheer Ali
      yesterday












    • could you remind me why we need the spread operator? what happens if we don't have it? @Maheer Ali

      – mph85
      yesterday












    • Is it because if we don't have it, it'll just log an object?

      – mph85
      yesterday











    • @mph85 No if we will not have it. We will have a Set() inside array. We use it convert Set() to Array

      – Maheer Ali
      yesterday


















    5














    You could sort the array before and filter the array by checking only one side for duplicates or both sides.






    var array = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10],
    result1,
    result2;

    array.sort((a, b) => a - b);

    result1 = array.filter((v, i, a) => a[i - 1] !== v);
    result2 = array.filter((v, i, a) => a[i - 1] !== v && a[i + 1] !== v);

    console.log(...result1);
    console.log(...result2)








    share|improve this answer























    • thank for that, for the result1 what is going on with the a[i - 1] !== v?

      – mph85
      23 hours ago











    • a is the array, i is the actual index, and v is the actual value. it takes the value from the index before of the actual index and looks if the values are not equal.

      – Nina Scholz
      23 hours ago











    • ah ok, and sorry, it takes the value from the index before of the actual index? Not sure what you mean by that

      – mph85
      23 hours ago












    • for example if you have the value 9 of the array as v, then the value before is 8.

      – Nina Scholz
      23 hours ago











    • ah ok, thank you for that

      – mph85
      23 hours ago



















    5














    You can create both arrays in One Go






    let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
    let unique = new Set();
    let repeated = Array.from(arr.reduce((acc, curr) =>
    acc.has(curr) ? unique.delete(curr) : acc.add(curr) && unique.add(curr);
    return acc;
    , new Set()));

    console.log(Array.from(unique))
    console.log(repeated)








    share|improve this answer


















    • 1





      Nice one mate +1

      – Maheer Ali
      yesterday











    • I wonder if the ternary plus && could be unclear though (x?y:z&&w)? It's not obvious to me how JS's order of operations would handle that, and I wonder if you could get across the same logic and reasoning by using if/else?

      – Florrie
      yesterday


















    5














    You can use Array.prototype.reduce() create a hash object where the keys are the numbers in the array and the values are going to be the the repeated occurrence of numbers in the arr array variable..



    Then using Object.keys():



    • Remove all duplicates Object.keys(hash)

    • Remove all duplicates but filtering with Array.prototype.filter() to get the numbers with only one occurrence

    Code:






    const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
    const hash = arr.reduce((a, c) => (a[c] = (a[c] || 0) + 1, a), );

    // [1, 2, 3, 4, 5, 8, 9, 10];
    const finalResultOne = Object.keys(hash);

    // [1, 9, 10];
    const finalResultTwo = Object.keys(hash).filter(k => hash[k] === 1);

    console.log('finalResultOne:', ...finalResultOne);
    console.log('finalResultTwo:', ...finalResultTwo);








    share|improve this answer
































      4














      You can use closure and Map






      let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

      const build = ar =>
      const mapObj = ar.reduce((acc, e) =>
      acc.has(e) ? acc.set(e, true) : acc.set(e, false)
      return acc
      , new Map())

      return function(hasDup = true)
      if(hasDup) return [...mapObj.keys()]
      else return [...mapObj].filter(([key, val]) => !val).map(([k, v])=> k)



      const getArr = build(arr)

      console.log(getArr())
      console.log(getArr(false))








      share|improve this answer






























        4














        As many other have said, the first one is just [...new Set(arr)]



        For the second, just filter out those that occur more than once:




        const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

        const count = (arr, e) => arr.filter(n => n == e).length

        const unique = arr => arr.filter(e => count(arr, e) < 2)

        console.log(unique(arr));








        share|improve this answer






























          2














          var arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
          var map = ;
          var finalResult = [];
          for(var i = 0; i < arr.length; i++)
          if(!map.hasOwnProperty(arr[i]))
          map[arr[i]] = true;
          finalResult.push(arr[i]);



          //if you need it sorted otherwise it will be in order
          finalResult.sort(function(a, b)return a-b);





          share|improve this answer





























            9 Answers
            9






            active

            oldest

            votes








            9 Answers
            9






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            19














            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));








            share|improve this answer





























              19














              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));








              share|improve this answer



























                19












                19








                19







                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));








                share|improve this answer















                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));








                let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                console.log(Array.from(new Set(arr)));





                let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                console.log(Array.from(new Set(arr)));





                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);





                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);





                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));





                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));






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited yesterday

























                answered yesterday









                Aswin KumarAswin Kumar

                899115




                899115























                    14














                    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);








                    share|improve this answer

























                    • You could also add .sort() to sort them by numerical order: .sort(function(a, b)return a - b) on finalresult

                      – Mukyuu
                      yesterday











                    • Yes @Mukyuu, that would also be useful

                      – Jack Bashford
                      yesterday






                    • 5





                      Worth pointing out that the run time of this approach will be quadratic on the size of the input, which is probably not great unless the input arrays are known to be always fairly small.

                      – Joe Lee-Moyet
                      yesterday






                    • 1





                      Most voted with multiple array#filter, array#sort and array#indexOf... That is not performant

                      – Yosvel Quintero
                      yesterday












                    • Do note that the .sort() is not necessary - the end result without the sort is still an array without any duplicate items, just in the same order as the original array. (It does make it exactly match the finalResult variable in the question though.)

                      – Florrie
                      yesterday















                    14














                    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);








                    share|improve this answer

























                    • You could also add .sort() to sort them by numerical order: .sort(function(a, b)return a - b) on finalresult

                      – Mukyuu
                      yesterday











                    • Yes @Mukyuu, that would also be useful

                      – Jack Bashford
                      yesterday






                    • 5





                      Worth pointing out that the run time of this approach will be quadratic on the size of the input, which is probably not great unless the input arrays are known to be always fairly small.

                      – Joe Lee-Moyet
                      yesterday






                    • 1





                      Most voted with multiple array#filter, array#sort and array#indexOf... That is not performant

                      – Yosvel Quintero
                      yesterday












                    • Do note that the .sort() is not necessary - the end result without the sort is still an array without any duplicate items, just in the same order as the original array. (It does make it exactly match the finalResult variable in the question though.)

                      – Florrie
                      yesterday













                    14












                    14








                    14







                    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);








                    share|improve this answer















                    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);








                    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);





                    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);





                    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);





                    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);






                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited yesterday









                    Mukyuu

                    1,79831123




                    1,79831123










                    answered yesterday









                    Jack BashfordJack Bashford

                    12.5k31847




                    12.5k31847












                    • You could also add .sort() to sort them by numerical order: .sort(function(a, b)return a - b) on finalresult

                      – Mukyuu
                      yesterday











                    • Yes @Mukyuu, that would also be useful

                      – Jack Bashford
                      yesterday






                    • 5





                      Worth pointing out that the run time of this approach will be quadratic on the size of the input, which is probably not great unless the input arrays are known to be always fairly small.

                      – Joe Lee-Moyet
                      yesterday






                    • 1





                      Most voted with multiple array#filter, array#sort and array#indexOf... That is not performant

                      – Yosvel Quintero
                      yesterday












                    • Do note that the .sort() is not necessary - the end result without the sort is still an array without any duplicate items, just in the same order as the original array. (It does make it exactly match the finalResult variable in the question though.)

                      – Florrie
                      yesterday

















                    • You could also add .sort() to sort them by numerical order: .sort(function(a, b)return a - b) on finalresult

                      – Mukyuu
                      yesterday











                    • Yes @Mukyuu, that would also be useful

                      – Jack Bashford
                      yesterday






                    • 5





                      Worth pointing out that the run time of this approach will be quadratic on the size of the input, which is probably not great unless the input arrays are known to be always fairly small.

                      – Joe Lee-Moyet
                      yesterday






                    • 1





                      Most voted with multiple array#filter, array#sort and array#indexOf... That is not performant

                      – Yosvel Quintero
                      yesterday












                    • Do note that the .sort() is not necessary - the end result without the sort is still an array without any duplicate items, just in the same order as the original array. (It does make it exactly match the finalResult variable in the question though.)

                      – Florrie
                      yesterday
















                    You could also add .sort() to sort them by numerical order: .sort(function(a, b)return a - b) on finalresult

                    – Mukyuu
                    yesterday





                    You could also add .sort() to sort them by numerical order: .sort(function(a, b)return a - b) on finalresult

                    – Mukyuu
                    yesterday













                    Yes @Mukyuu, that would also be useful

                    – Jack Bashford
                    yesterday





                    Yes @Mukyuu, that would also be useful

                    – Jack Bashford
                    yesterday




                    5




                    5





                    Worth pointing out that the run time of this approach will be quadratic on the size of the input, which is probably not great unless the input arrays are known to be always fairly small.

                    – Joe Lee-Moyet
                    yesterday





                    Worth pointing out that the run time of this approach will be quadratic on the size of the input, which is probably not great unless the input arrays are known to be always fairly small.

                    – Joe Lee-Moyet
                    yesterday




                    1




                    1





                    Most voted with multiple array#filter, array#sort and array#indexOf... That is not performant

                    – Yosvel Quintero
                    yesterday






                    Most voted with multiple array#filter, array#sort and array#indexOf... That is not performant

                    – Yosvel Quintero
                    yesterday














                    Do note that the .sort() is not necessary - the end result without the sort is still an array without any duplicate items, just in the same order as the original array. (It does make it exactly match the finalResult variable in the question though.)

                    – Florrie
                    yesterday





                    Do note that the .sort() is not necessary - the end result without the sort is still an array without any duplicate items, just in the same order as the original array. (It does make it exactly match the finalResult variable in the question though.)

                    – Florrie
                    yesterday











                    10














                    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)








                    share|improve this answer

























                    • nice appreciate that, that 2nd one looks crazy. I'm assuming the time complexity for would be less than ideal compared to other results?

                      – mph85
                      yesterday











                    • @mph85 Yes its a little complex because it doesnot go through the array again and again instead it just store all the result obj and then filter it.Its better regarding performance

                      – Maheer Ali
                      yesterday












                    • could you remind me why we need the spread operator? what happens if we don't have it? @Maheer Ali

                      – mph85
                      yesterday












                    • Is it because if we don't have it, it'll just log an object?

                      – mph85
                      yesterday











                    • @mph85 No if we will not have it. We will have a Set() inside array. We use it convert Set() to Array

                      – Maheer Ali
                      yesterday















                    10














                    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)








                    share|improve this answer

























                    • nice appreciate that, that 2nd one looks crazy. I'm assuming the time complexity for would be less than ideal compared to other results?

                      – mph85
                      yesterday











                    • @mph85 Yes its a little complex because it doesnot go through the array again and again instead it just store all the result obj and then filter it.Its better regarding performance

                      – Maheer Ali
                      yesterday












                    • could you remind me why we need the spread operator? what happens if we don't have it? @Maheer Ali

                      – mph85
                      yesterday












                    • Is it because if we don't have it, it'll just log an object?

                      – mph85
                      yesterday











                    • @mph85 No if we will not have it. We will have a Set() inside array. We use it convert Set() to Array

                      – Maheer Ali
                      yesterday













                    10












                    10








                    10







                    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)








                    share|improve this answer















                    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)








                    let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                    let res = [...new Set(arr)]
                    console.log(res)





                    let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                    let res = [...new Set(arr)]
                    console.log(res)





                    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)





                    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)






                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited yesterday

























                    answered yesterday









                    Maheer AliMaheer Ali

                    6,836518




                    6,836518












                    • nice appreciate that, that 2nd one looks crazy. I'm assuming the time complexity for would be less than ideal compared to other results?

                      – mph85
                      yesterday











                    • @mph85 Yes its a little complex because it doesnot go through the array again and again instead it just store all the result obj and then filter it.Its better regarding performance

                      – Maheer Ali
                      yesterday












                    • could you remind me why we need the spread operator? what happens if we don't have it? @Maheer Ali

                      – mph85
                      yesterday












                    • Is it because if we don't have it, it'll just log an object?

                      – mph85
                      yesterday











                    • @mph85 No if we will not have it. We will have a Set() inside array. We use it convert Set() to Array

                      – Maheer Ali
                      yesterday

















                    • nice appreciate that, that 2nd one looks crazy. I'm assuming the time complexity for would be less than ideal compared to other results?

                      – mph85
                      yesterday











                    • @mph85 Yes its a little complex because it doesnot go through the array again and again instead it just store all the result obj and then filter it.Its better regarding performance

                      – Maheer Ali
                      yesterday












                    • could you remind me why we need the spread operator? what happens if we don't have it? @Maheer Ali

                      – mph85
                      yesterday












                    • Is it because if we don't have it, it'll just log an object?

                      – mph85
                      yesterday











                    • @mph85 No if we will not have it. We will have a Set() inside array. We use it convert Set() to Array

                      – Maheer Ali
                      yesterday
















                    nice appreciate that, that 2nd one looks crazy. I'm assuming the time complexity for would be less than ideal compared to other results?

                    – mph85
                    yesterday





                    nice appreciate that, that 2nd one looks crazy. I'm assuming the time complexity for would be less than ideal compared to other results?

                    – mph85
                    yesterday













                    @mph85 Yes its a little complex because it doesnot go through the array again and again instead it just store all the result obj and then filter it.Its better regarding performance

                    – Maheer Ali
                    yesterday






                    @mph85 Yes its a little complex because it doesnot go through the array again and again instead it just store all the result obj and then filter it.Its better regarding performance

                    – Maheer Ali
                    yesterday














                    could you remind me why we need the spread operator? what happens if we don't have it? @Maheer Ali

                    – mph85
                    yesterday






                    could you remind me why we need the spread operator? what happens if we don't have it? @Maheer Ali

                    – mph85
                    yesterday














                    Is it because if we don't have it, it'll just log an object?

                    – mph85
                    yesterday





                    Is it because if we don't have it, it'll just log an object?

                    – mph85
                    yesterday













                    @mph85 No if we will not have it. We will have a Set() inside array. We use it convert Set() to Array

                    – Maheer Ali
                    yesterday





                    @mph85 No if we will not have it. We will have a Set() inside array. We use it convert Set() to Array

                    – Maheer Ali
                    yesterday











                    5














                    You could sort the array before and filter the array by checking only one side for duplicates or both sides.






                    var array = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10],
                    result1,
                    result2;

                    array.sort((a, b) => a - b);

                    result1 = array.filter((v, i, a) => a[i - 1] !== v);
                    result2 = array.filter((v, i, a) => a[i - 1] !== v && a[i + 1] !== v);

                    console.log(...result1);
                    console.log(...result2)








                    share|improve this answer























                    • thank for that, for the result1 what is going on with the a[i - 1] !== v?

                      – mph85
                      23 hours ago











                    • a is the array, i is the actual index, and v is the actual value. it takes the value from the index before of the actual index and looks if the values are not equal.

                      – Nina Scholz
                      23 hours ago











                    • ah ok, and sorry, it takes the value from the index before of the actual index? Not sure what you mean by that

                      – mph85
                      23 hours ago












                    • for example if you have the value 9 of the array as v, then the value before is 8.

                      – Nina Scholz
                      23 hours ago











                    • ah ok, thank you for that

                      – mph85
                      23 hours ago
















                    5














                    You could sort the array before and filter the array by checking only one side for duplicates or both sides.






                    var array = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10],
                    result1,
                    result2;

                    array.sort((a, b) => a - b);

                    result1 = array.filter((v, i, a) => a[i - 1] !== v);
                    result2 = array.filter((v, i, a) => a[i - 1] !== v && a[i + 1] !== v);

                    console.log(...result1);
                    console.log(...result2)








                    share|improve this answer























                    • thank for that, for the result1 what is going on with the a[i - 1] !== v?

                      – mph85
                      23 hours ago











                    • a is the array, i is the actual index, and v is the actual value. it takes the value from the index before of the actual index and looks if the values are not equal.

                      – Nina Scholz
                      23 hours ago











                    • ah ok, and sorry, it takes the value from the index before of the actual index? Not sure what you mean by that

                      – mph85
                      23 hours ago












                    • for example if you have the value 9 of the array as v, then the value before is 8.

                      – Nina Scholz
                      23 hours ago











                    • ah ok, thank you for that

                      – mph85
                      23 hours ago














                    5












                    5








                    5







                    You could sort the array before and filter the array by checking only one side for duplicates or both sides.






                    var array = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10],
                    result1,
                    result2;

                    array.sort((a, b) => a - b);

                    result1 = array.filter((v, i, a) => a[i - 1] !== v);
                    result2 = array.filter((v, i, a) => a[i - 1] !== v && a[i + 1] !== v);

                    console.log(...result1);
                    console.log(...result2)








                    share|improve this answer













                    You could sort the array before and filter the array by checking only one side for duplicates or both sides.






                    var array = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10],
                    result1,
                    result2;

                    array.sort((a, b) => a - b);

                    result1 = array.filter((v, i, a) => a[i - 1] !== v);
                    result2 = array.filter((v, i, a) => a[i - 1] !== v && a[i + 1] !== v);

                    console.log(...result1);
                    console.log(...result2)








                    var array = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10],
                    result1,
                    result2;

                    array.sort((a, b) => a - b);

                    result1 = array.filter((v, i, a) => a[i - 1] !== v);
                    result2 = array.filter((v, i, a) => a[i - 1] !== v && a[i + 1] !== v);

                    console.log(...result1);
                    console.log(...result2)





                    var array = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10],
                    result1,
                    result2;

                    array.sort((a, b) => a - b);

                    result1 = array.filter((v, i, a) => a[i - 1] !== v);
                    result2 = array.filter((v, i, a) => a[i - 1] !== v && a[i + 1] !== v);

                    console.log(...result1);
                    console.log(...result2)






                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered yesterday









                    Nina ScholzNina Scholz

                    192k15104177




                    192k15104177












                    • thank for that, for the result1 what is going on with the a[i - 1] !== v?

                      – mph85
                      23 hours ago











                    • a is the array, i is the actual index, and v is the actual value. it takes the value from the index before of the actual index and looks if the values are not equal.

                      – Nina Scholz
                      23 hours ago











                    • ah ok, and sorry, it takes the value from the index before of the actual index? Not sure what you mean by that

                      – mph85
                      23 hours ago












                    • for example if you have the value 9 of the array as v, then the value before is 8.

                      – Nina Scholz
                      23 hours ago











                    • ah ok, thank you for that

                      – mph85
                      23 hours ago


















                    • thank for that, for the result1 what is going on with the a[i - 1] !== v?

                      – mph85
                      23 hours ago











                    • a is the array, i is the actual index, and v is the actual value. it takes the value from the index before of the actual index and looks if the values are not equal.

                      – Nina Scholz
                      23 hours ago











                    • ah ok, and sorry, it takes the value from the index before of the actual index? Not sure what you mean by that

                      – mph85
                      23 hours ago












                    • for example if you have the value 9 of the array as v, then the value before is 8.

                      – Nina Scholz
                      23 hours ago











                    • ah ok, thank you for that

                      – mph85
                      23 hours ago

















                    thank for that, for the result1 what is going on with the a[i - 1] !== v?

                    – mph85
                    23 hours ago





                    thank for that, for the result1 what is going on with the a[i - 1] !== v?

                    – mph85
                    23 hours ago













                    a is the array, i is the actual index, and v is the actual value. it takes the value from the index before of the actual index and looks if the values are not equal.

                    – Nina Scholz
                    23 hours ago





                    a is the array, i is the actual index, and v is the actual value. it takes the value from the index before of the actual index and looks if the values are not equal.

                    – Nina Scholz
                    23 hours ago













                    ah ok, and sorry, it takes the value from the index before of the actual index? Not sure what you mean by that

                    – mph85
                    23 hours ago






                    ah ok, and sorry, it takes the value from the index before of the actual index? Not sure what you mean by that

                    – mph85
                    23 hours ago














                    for example if you have the value 9 of the array as v, then the value before is 8.

                    – Nina Scholz
                    23 hours ago





                    for example if you have the value 9 of the array as v, then the value before is 8.

                    – Nina Scholz
                    23 hours ago













                    ah ok, thank you for that

                    – mph85
                    23 hours ago






                    ah ok, thank you for that

                    – mph85
                    23 hours ago












                    5














                    You can create both arrays in One Go






                    let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                    let unique = new Set();
                    let repeated = Array.from(arr.reduce((acc, curr) =>
                    acc.has(curr) ? unique.delete(curr) : acc.add(curr) && unique.add(curr);
                    return acc;
                    , new Set()));

                    console.log(Array.from(unique))
                    console.log(repeated)








                    share|improve this answer


















                    • 1





                      Nice one mate +1

                      – Maheer Ali
                      yesterday











                    • I wonder if the ternary plus && could be unclear though (x?y:z&&w)? It's not obvious to me how JS's order of operations would handle that, and I wonder if you could get across the same logic and reasoning by using if/else?

                      – Florrie
                      yesterday















                    5














                    You can create both arrays in One Go






                    let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                    let unique = new Set();
                    let repeated = Array.from(arr.reduce((acc, curr) =>
                    acc.has(curr) ? unique.delete(curr) : acc.add(curr) && unique.add(curr);
                    return acc;
                    , new Set()));

                    console.log(Array.from(unique))
                    console.log(repeated)








                    share|improve this answer


















                    • 1





                      Nice one mate +1

                      – Maheer Ali
                      yesterday











                    • I wonder if the ternary plus && could be unclear though (x?y:z&&w)? It's not obvious to me how JS's order of operations would handle that, and I wonder if you could get across the same logic and reasoning by using if/else?

                      – Florrie
                      yesterday













                    5












                    5








                    5







                    You can create both arrays in One Go






                    let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                    let unique = new Set();
                    let repeated = Array.from(arr.reduce((acc, curr) =>
                    acc.has(curr) ? unique.delete(curr) : acc.add(curr) && unique.add(curr);
                    return acc;
                    , new Set()));

                    console.log(Array.from(unique))
                    console.log(repeated)








                    share|improve this answer













                    You can create both arrays in One Go






                    let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                    let unique = new Set();
                    let repeated = Array.from(arr.reduce((acc, curr) =>
                    acc.has(curr) ? unique.delete(curr) : acc.add(curr) && unique.add(curr);
                    return acc;
                    , new Set()));

                    console.log(Array.from(unique))
                    console.log(repeated)








                    let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                    let unique = new Set();
                    let repeated = Array.from(arr.reduce((acc, curr) =>
                    acc.has(curr) ? unique.delete(curr) : acc.add(curr) && unique.add(curr);
                    return acc;
                    , new Set()));

                    console.log(Array.from(unique))
                    console.log(repeated)





                    let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                    let unique = new Set();
                    let repeated = Array.from(arr.reduce((acc, curr) =>
                    acc.has(curr) ? unique.delete(curr) : acc.add(curr) && unique.add(curr);
                    return acc;
                    , new Set()));

                    console.log(Array.from(unique))
                    console.log(repeated)






                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered yesterday









                    AZ_AZ_

                    569210




                    569210







                    • 1





                      Nice one mate +1

                      – Maheer Ali
                      yesterday











                    • I wonder if the ternary plus && could be unclear though (x?y:z&&w)? It's not obvious to me how JS's order of operations would handle that, and I wonder if you could get across the same logic and reasoning by using if/else?

                      – Florrie
                      yesterday












                    • 1





                      Nice one mate +1

                      – Maheer Ali
                      yesterday











                    • I wonder if the ternary plus && could be unclear though (x?y:z&&w)? It's not obvious to me how JS's order of operations would handle that, and I wonder if you could get across the same logic and reasoning by using if/else?

                      – Florrie
                      yesterday







                    1




                    1





                    Nice one mate +1

                    – Maheer Ali
                    yesterday





                    Nice one mate +1

                    – Maheer Ali
                    yesterday













                    I wonder if the ternary plus && could be unclear though (x?y:z&&w)? It's not obvious to me how JS's order of operations would handle that, and I wonder if you could get across the same logic and reasoning by using if/else?

                    – Florrie
                    yesterday





                    I wonder if the ternary plus && could be unclear though (x?y:z&&w)? It's not obvious to me how JS's order of operations would handle that, and I wonder if you could get across the same logic and reasoning by using if/else?

                    – Florrie
                    yesterday











                    5














                    You can use Array.prototype.reduce() create a hash object where the keys are the numbers in the array and the values are going to be the the repeated occurrence of numbers in the arr array variable..



                    Then using Object.keys():



                    • Remove all duplicates Object.keys(hash)

                    • Remove all duplicates but filtering with Array.prototype.filter() to get the numbers with only one occurrence

                    Code:






                    const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                    const hash = arr.reduce((a, c) => (a[c] = (a[c] || 0) + 1, a), );

                    // [1, 2, 3, 4, 5, 8, 9, 10];
                    const finalResultOne = Object.keys(hash);

                    // [1, 9, 10];
                    const finalResultTwo = Object.keys(hash).filter(k => hash[k] === 1);

                    console.log('finalResultOne:', ...finalResultOne);
                    console.log('finalResultTwo:', ...finalResultTwo);








                    share|improve this answer





























                      5














                      You can use Array.prototype.reduce() create a hash object where the keys are the numbers in the array and the values are going to be the the repeated occurrence of numbers in the arr array variable..



                      Then using Object.keys():



                      • Remove all duplicates Object.keys(hash)

                      • Remove all duplicates but filtering with Array.prototype.filter() to get the numbers with only one occurrence

                      Code:






                      const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                      const hash = arr.reduce((a, c) => (a[c] = (a[c] || 0) + 1, a), );

                      // [1, 2, 3, 4, 5, 8, 9, 10];
                      const finalResultOne = Object.keys(hash);

                      // [1, 9, 10];
                      const finalResultTwo = Object.keys(hash).filter(k => hash[k] === 1);

                      console.log('finalResultOne:', ...finalResultOne);
                      console.log('finalResultTwo:', ...finalResultTwo);








                      share|improve this answer



























                        5












                        5








                        5







                        You can use Array.prototype.reduce() create a hash object where the keys are the numbers in the array and the values are going to be the the repeated occurrence of numbers in the arr array variable..



                        Then using Object.keys():



                        • Remove all duplicates Object.keys(hash)

                        • Remove all duplicates but filtering with Array.prototype.filter() to get the numbers with only one occurrence

                        Code:






                        const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                        const hash = arr.reduce((a, c) => (a[c] = (a[c] || 0) + 1, a), );

                        // [1, 2, 3, 4, 5, 8, 9, 10];
                        const finalResultOne = Object.keys(hash);

                        // [1, 9, 10];
                        const finalResultTwo = Object.keys(hash).filter(k => hash[k] === 1);

                        console.log('finalResultOne:', ...finalResultOne);
                        console.log('finalResultTwo:', ...finalResultTwo);








                        share|improve this answer















                        You can use Array.prototype.reduce() create a hash object where the keys are the numbers in the array and the values are going to be the the repeated occurrence of numbers in the arr array variable..



                        Then using Object.keys():



                        • Remove all duplicates Object.keys(hash)

                        • Remove all duplicates but filtering with Array.prototype.filter() to get the numbers with only one occurrence

                        Code:






                        const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                        const hash = arr.reduce((a, c) => (a[c] = (a[c] || 0) + 1, a), );

                        // [1, 2, 3, 4, 5, 8, 9, 10];
                        const finalResultOne = Object.keys(hash);

                        // [1, 9, 10];
                        const finalResultTwo = Object.keys(hash).filter(k => hash[k] === 1);

                        console.log('finalResultOne:', ...finalResultOne);
                        console.log('finalResultTwo:', ...finalResultTwo);








                        const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                        const hash = arr.reduce((a, c) => (a[c] = (a[c] || 0) + 1, a), );

                        // [1, 2, 3, 4, 5, 8, 9, 10];
                        const finalResultOne = Object.keys(hash);

                        // [1, 9, 10];
                        const finalResultTwo = Object.keys(hash).filter(k => hash[k] === 1);

                        console.log('finalResultOne:', ...finalResultOne);
                        console.log('finalResultTwo:', ...finalResultTwo);





                        const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                        const hash = arr.reduce((a, c) => (a[c] = (a[c] || 0) + 1, a), );

                        // [1, 2, 3, 4, 5, 8, 9, 10];
                        const finalResultOne = Object.keys(hash);

                        // [1, 9, 10];
                        const finalResultTwo = Object.keys(hash).filter(k => hash[k] === 1);

                        console.log('finalResultOne:', ...finalResultOne);
                        console.log('finalResultTwo:', ...finalResultTwo);






                        share|improve this answer














                        share|improve this answer



                        share|improve this answer








                        edited 18 hours ago

























                        answered yesterday









                        Yosvel QuinteroYosvel Quintero

                        11.8k42531




                        11.8k42531





















                            4














                            You can use closure and Map






                            let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                            const build = ar =>
                            const mapObj = ar.reduce((acc, e) =>
                            acc.has(e) ? acc.set(e, true) : acc.set(e, false)
                            return acc
                            , new Map())

                            return function(hasDup = true)
                            if(hasDup) return [...mapObj.keys()]
                            else return [...mapObj].filter(([key, val]) => !val).map(([k, v])=> k)



                            const getArr = build(arr)

                            console.log(getArr())
                            console.log(getArr(false))








                            share|improve this answer



























                              4














                              You can use closure and Map






                              let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                              const build = ar =>
                              const mapObj = ar.reduce((acc, e) =>
                              acc.has(e) ? acc.set(e, true) : acc.set(e, false)
                              return acc
                              , new Map())

                              return function(hasDup = true)
                              if(hasDup) return [...mapObj.keys()]
                              else return [...mapObj].filter(([key, val]) => !val).map(([k, v])=> k)



                              const getArr = build(arr)

                              console.log(getArr())
                              console.log(getArr(false))








                              share|improve this answer

























                                4












                                4








                                4







                                You can use closure and Map






                                let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                                const build = ar =>
                                const mapObj = ar.reduce((acc, e) =>
                                acc.has(e) ? acc.set(e, true) : acc.set(e, false)
                                return acc
                                , new Map())

                                return function(hasDup = true)
                                if(hasDup) return [...mapObj.keys()]
                                else return [...mapObj].filter(([key, val]) => !val).map(([k, v])=> k)



                                const getArr = build(arr)

                                console.log(getArr())
                                console.log(getArr(false))








                                share|improve this answer













                                You can use closure and Map






                                let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                                const build = ar =>
                                const mapObj = ar.reduce((acc, e) =>
                                acc.has(e) ? acc.set(e, true) : acc.set(e, false)
                                return acc
                                , new Map())

                                return function(hasDup = true)
                                if(hasDup) return [...mapObj.keys()]
                                else return [...mapObj].filter(([key, val]) => !val).map(([k, v])=> k)



                                const getArr = build(arr)

                                console.log(getArr())
                                console.log(getArr(false))








                                let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                                const build = ar =>
                                const mapObj = ar.reduce((acc, e) =>
                                acc.has(e) ? acc.set(e, true) : acc.set(e, false)
                                return acc
                                , new Map())

                                return function(hasDup = true)
                                if(hasDup) return [...mapObj.keys()]
                                else return [...mapObj].filter(([key, val]) => !val).map(([k, v])=> k)



                                const getArr = build(arr)

                                console.log(getArr())
                                console.log(getArr(false))





                                let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                                const build = ar =>
                                const mapObj = ar.reduce((acc, e) =>
                                acc.has(e) ? acc.set(e, true) : acc.set(e, false)
                                return acc
                                , new Map())

                                return function(hasDup = true)
                                if(hasDup) return [...mapObj.keys()]
                                else return [...mapObj].filter(([key, val]) => !val).map(([k, v])=> k)



                                const getArr = build(arr)

                                console.log(getArr())
                                console.log(getArr(false))






                                share|improve this answer












                                share|improve this answer



                                share|improve this answer










                                answered yesterday









                                birdbird

                                892620




                                892620





















                                    4














                                    As many other have said, the first one is just [...new Set(arr)]



                                    For the second, just filter out those that occur more than once:




                                    const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                                    const count = (arr, e) => arr.filter(n => n == e).length

                                    const unique = arr => arr.filter(e => count(arr, e) < 2)

                                    console.log(unique(arr));








                                    share|improve this answer



























                                      4














                                      As many other have said, the first one is just [...new Set(arr)]



                                      For the second, just filter out those that occur more than once:




                                      const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                                      const count = (arr, e) => arr.filter(n => n == e).length

                                      const unique = arr => arr.filter(e => count(arr, e) < 2)

                                      console.log(unique(arr));








                                      share|improve this answer

























                                        4












                                        4








                                        4







                                        As many other have said, the first one is just [...new Set(arr)]



                                        For the second, just filter out those that occur more than once:




                                        const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                                        const count = (arr, e) => arr.filter(n => n == e).length

                                        const unique = arr => arr.filter(e => count(arr, e) < 2)

                                        console.log(unique(arr));








                                        share|improve this answer













                                        As many other have said, the first one is just [...new Set(arr)]



                                        For the second, just filter out those that occur more than once:




                                        const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                                        const count = (arr, e) => arr.filter(n => n == e).length

                                        const unique = arr => arr.filter(e => count(arr, e) < 2)

                                        console.log(unique(arr));








                                        const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                                        const count = (arr, e) => arr.filter(n => n == e).length

                                        const unique = arr => arr.filter(e => count(arr, e) < 2)

                                        console.log(unique(arr));





                                        const arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

                                        const count = (arr, e) => arr.filter(n => n == e).length

                                        const unique = arr => arr.filter(e => count(arr, e) < 2)

                                        console.log(unique(arr));






                                        share|improve this answer












                                        share|improve this answer



                                        share|improve this answer










                                        answered yesterday









                                        JollyJokerJollyJoker

                                        21115




                                        21115





















                                            2














                                            var arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                                            var map = ;
                                            var finalResult = [];
                                            for(var i = 0; i < arr.length; i++)
                                            if(!map.hasOwnProperty(arr[i]))
                                            map[arr[i]] = true;
                                            finalResult.push(arr[i]);



                                            //if you need it sorted otherwise it will be in order
                                            finalResult.sort(function(a, b)return a-b);





                                            share|improve this answer



























                                              2














                                              var arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                                              var map = ;
                                              var finalResult = [];
                                              for(var i = 0; i < arr.length; i++)
                                              if(!map.hasOwnProperty(arr[i]))
                                              map[arr[i]] = true;
                                              finalResult.push(arr[i]);



                                              //if you need it sorted otherwise it will be in order
                                              finalResult.sort(function(a, b)return a-b);





                                              share|improve this answer

























                                                2












                                                2








                                                2







                                                var arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                                                var map = ;
                                                var finalResult = [];
                                                for(var i = 0; i < arr.length; i++)
                                                if(!map.hasOwnProperty(arr[i]))
                                                map[arr[i]] = true;
                                                finalResult.push(arr[i]);



                                                //if you need it sorted otherwise it will be in order
                                                finalResult.sort(function(a, b)return a-b);





                                                share|improve this answer













                                                var arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];
                                                var map = ;
                                                var finalResult = [];
                                                for(var i = 0; i < arr.length; i++)
                                                if(!map.hasOwnProperty(arr[i]))
                                                map[arr[i]] = true;
                                                finalResult.push(arr[i]);



                                                //if you need it sorted otherwise it will be in order
                                                finalResult.sort(function(a, b)return a-b);






                                                share|improve this answer












                                                share|improve this answer



                                                share|improve this answer










                                                answered yesterday









                                                JanspeedJanspeed

                                                1,3231315




                                                1,3231315













                                                    Popular posts from this blog

                                                    Adding axes to figuresAdding axes labels to LaTeX figuresLaTeX equivalent of ConTeXt buffersRotate a node but not its content: the case of the ellipse decorationHow to define the default vertical distance between nodes?TikZ scaling graphic and adjust node position and keep font sizeNumerical conditional within tikz keys?adding axes to shapesAlign axes across subfiguresAdding figures with a certain orderLine up nested tikz enviroments or how to get rid of themAdding axes labels to LaTeX figures

                                                    Luettelo Yhdysvaltain laivaston lentotukialuksista Lähteet | Navigointivalikko

                                                    Gary (muusikko) Sisällysluettelo Historia | Rockin' High | Lähteet | Aiheesta muualla | NavigointivalikkoInfobox OKTuomas "Gary" Keskinen Ancaran kitaristiksiProjekti Rockin' High