UNPKG

hd-utils

Version:

A handy utils for modern JS developers

29 lines (28 loc) 1.05 kB
import deepCompareObjects from '../object/deepCompare'; /** * @example removeDuplicatesFromArr([1,2,1]) => [1,2] * @example removeDuplicatesFromArr([{a:1}, {a:1}, {a:2}], key:"a") => [{a:1},{a:2}] * @example removeDuplicatesFromArr([{a:1}, {a:1}, {a:2}], key:"", deepCompare:true) => [{a:1},{a:2}] */ export default function removeDuplicatesFromArr(arr = [], key, deepCompare) { if (!Array.isArray(arr)) return []; if (!arr?.length) return arr; if (key?.length && !deepCompare) { return arr.filter((item, index, selfArr) => { if (typeof item === 'object' && item !== null) { return selfArr.findIndex(fItem => fItem[key] === item[key]) === index; } return selfArr.findIndex(fItem => fItem === item) === index; }); } if (deepCompare) { return arr.filter((item, index, arr) => { return (arr.findIndex(x => deepCompareObjects(item, x)) === index); }); } else { return Array.from(new Set(arr)); } }