Say I have the array [1,2,3,5,2,1,4]. How do I get make JS return [3,4,5]? 
I've looked at other questions here but they're all about delete the copies of a number which appears more than once, not both the original and the copies.
Thanks!
Say I have the array [1,2,3,5,2,1,4]. How do I get make JS return [3,4,5]? 
I've looked at other questions here but they're all about delete the copies of a number which appears more than once, not both the original and the copies.
Thanks!
 
    
    Use Array#filter method twice.
var data = [1, 2, 3, 5, 2, 1, 4];
// iterate over elements and filter
var res = data.filter(function(v) {
  // get the count of the current element in array
  // and filter based on the count
  return data.filter(function(v1) {
    // compare with current element
    return v1 == v;
    // check length
  }).length == 1;
});
console.log(res);Or another way using Array#indexOf and Array#lastIndexOf methods.
var data = [1, 2, 3, 5, 2, 1, 4];
// iterate over the array element and filter out
var res = data.filter(function(v) {
  // filter out only elements where both last 
  // index and first index are the same.
  return data.indexOf(v) == data.lastIndexOf(v);
});
console.log(res); 
    
    You can also use .slice().sort()
var x = [1,2,3,5,2,1,4];
var y = x.slice().sort(); // the value of Y is sorted value X
var newArr = []; // define new Array
for(var i = 0; i<y.length; i++){ // Loop through array y
  if(y[i] != y[i+1]){ //check if value is single
    newArr.push(y[i]); // then push it to new Array
  }else{
    i++; // else skip to next value which is same as y[i]
  }
}
console.log(newArr);If you check newArr it has value of:
[3, 4, 5]
 
    
    var arr = [1,2,3,5,2,1,4]
var sorted_arr = arr.slice().sort(); // You can define the comparing function here. 
var nonduplicates = [];
var duplicates=[];
for (var i = 0; i < arr.length; i++) {
    if (sorted_arr[i + 1] == sorted_arr[i]) {
        duplicates.push(sorted_arr[i]);
    }else{
        if(!duplicates.includes(sorted_arr[i])){
        nonduplicates.push(sorted_arr[i]);
      }
    }
}
alert("Non duplicate elements >>"+ nonduplicates);
alert("Duplicate elements >>"+duplicates);
 
    
    I think there could exists option with Map.
function unique(array) {
  // code goes here
  const myMap = new Map();
  for (const el of array) {
    // save elements of array that came only once in the same order
    !myMap.has(el) ? myMap.set(el, 1) : myMap.delete(el);
  }
  return [...myMap.keys()];
}
const array = [1,2,3,5,2,1,4];
//[11, 23, 321, 300, 50, 23, 100,89,300];
console.log(unique(array));