export const isArray = arr => return toString.call(arr) == '[object Array]';
export const uniqueArr = arr => [...new Set(arr)];
export const unionArr = (a, b) => [...new Set([...a, ...b])];
export const intersectArr = (a, b) => [...new Set([...a].filter(x => b.has(x)))];
export const differenceArr = (a, b) => [...new Set([...a].filter(x => !b.has(x)))];
export const uniqKeyInArr = (arr, key) => {
let cache = {};
return arr.reduceRight((item, next) => {
cache[next[key]] ? '' : cache[next[key]] = true && item.push(next);
return item;
}, []);
}
export const uniqObjInArr = arr =>
Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse);
export const flatten = arr => {
if (!Array.isArray(arr)) return arr;
return arr.reduce((done, curr) => done.concat(flatten(curr)), [])
}