Сниппет
const onlyUnique = function(values = []) {
let outArray = [];
Array.from(values).forEach((value, i, arr) => {
if (typeof value === 'object') {
if (outArray.length) return;
outArray = getOnlyUniqueObject(arr);
} else {
if (outArray.find(val => val === value)) return;
outArray.push(value);
}
});
return outArray;
}
/**
* @param values {Array}
* @return {Array}
*/
function getOnlyUniqueObject(values) {
const tempValues = [];
values.forEach(value => {
if (tempValues.includes(value)) return;
const valExists = tempValues.find(val => JSON.stringify(val) === JSON.stringify(value));
if (valExists) return;
tempValues.push(value);
});
return tempValues;
}
Демонстрация
onlyUnique([{x: 1}, {x: 1}, {x: 2}]) // => [{x:1}, {x:2}]
onlyUnique([1,2,2,1]) // => [1,2]