/**
* 数组去重
* 两个属性相同的对象也人为是重复的
* @author 许亚兵 <2732556589@qq.com>
* @license MIT
* @param { Array } arr 数组
* @returns { Array }
* */
export function uniqueArray(arr: any[]) {
const result: any[] = []
outer: for (const item of arr) {
for (const r of result) {
if (equals(item, r)) {
continue outer;
}
}
result.push(item)
}
return result
}
function isPrimitive(val: any) {
return val !== Object(val)
}
function equals(value1: any, value2: any) {
if (isPrimitive(value1) || isPrimitive(value2)) {
return Object.is(value1, value2);
}
const keys1 = Object.keys(value1);
const keys2 = Object.keys(value2);
if (keys1.length !== keys2.length) {
return false;
}
for (const key of keys1) {
const val1 = value1[key];
const val2 = value2[key];
if (!equals(val1, val2)) {
return false;
}
}
return true;
}
更多好用的方法库参考:pmq-ui - npm