ascor
Version:
一些常用的简单的js工具
19 lines (18 loc) • 638 B
JavaScript
import { isArray, isEmpty, isDeepEqual } from "../is/index";
import { arrayHasValue } from "./arrayHasValue";
/**
* 数组去重
* @param arr 传入需要去重的数组
* @param ownkey 如果数组元素是对象,可以指定判断重复的key,不传则深度对比
*/
export const arrayUnique = (arr, ownkey) => {
if (!isArray(arr)) {
return arr;
}
return arr.reduce((prev, cur) => {
if (!isEmpty(ownkey)) {
return prev.some((m) => isDeepEqual(m[ownkey], cur[ownkey])) ? prev : [...prev, cur];
}
return arrayHasValue(prev, cur) != -1 ? prev : [...prev, cur];
}, []);
};