Array item type.
To simplify.
Unique array.
export function arrayUnique<T_ArrayItem>(
arr: T_ArrayItem[],
args: Partial<arrayUnique.Args> = {},
): T_ArrayItem[] {
// returns
if ( !Array.isArray( arr ) ) { return arr; }
const {
compareViaJson = false,
} = args;
// returns
if ( !compareViaJson ) {
return [ ...arr ].filter( ( v, i, a ) => a.indexOf( v ) === i );
}
const stringify = ( value: any ) => JSON.stringify(
typeof value === 'object'
? Array.isArray( value )
? value.sort()
: objectKeySort( JSON.parse( JSON.stringify( value ) ) )
: value
);
const jsonArr = [ ...arr ].map( stringify );
return [ ...arr ].filter( ( v, i ) => jsonArr.indexOf( stringify( v ) ) === i );
}
Uses Array.filter to create a unique array.
Filters out any item that is not the first instance of that item in the array.