JSFiddle - React, Tailwind, and code Playground
by prometh
JavaScript
function unique(arr) {
var key = "____uniqueKey";
var stringsNumbers = {};
var objects = [];
var unique = [];
arr.forEach( function(value) {
switch (typeof value) {
case "object": {
if ( !value[key] ) {
value[key] = true;
objects.push(value);
unique.push(value);
}
break;
}
default: {
if ( !stringsNumbers[value] ) {
stringsNumbers[value] = true;
unique.push(value);
}
}
}
});
objects.forEach( function(object) {
delete object[key];
});
return unique;
}
var o1 = {name:"foo1"};
var o2 = {name:"foo2"};
console.log( unique(["foo","bar","foo"]) ); //=> ["foo", "bar"]
console.log( unique([o1, o1]) ); //=> [o1]
console.log( unique(["foo",o1, o1, o2]) ); //=> ["foo", o1, o2]) );