JSFiddle - React, Tailwind, and code Playground

by dpren

JavaScript

/*
* uniqify
*   
* Returns a copy of an array with duplicate references removed, but identical values are preserved.
*/
function uniqify(originalArr) {
  let arr = [...originalArr];
  let newArr = [];
  let length = arr.length - 1;
  let i = -1;
  while (i++ < length) {
    let val = arr.shift();
    if (newArr.includes(val) === false) {
      newArr.push(val);
    }
  }
  return newArr;
}

let dup = {a: 1, _checked: true};
let array = [dup, dup, {b: 2}, dup, {b: 2}];

console.log('uniqified:', uniqify(array));
console.log('original is not mutated:', array);