// 数组去重方法
// 1:支持基本数据类型组成的数组
// 比如 let arr = [1, 5, 6, 6, 1, true, 'true', '6', 1, 1, 5];
// 调用 RD(arr)
// 返回 [1, 5, 6, true, "true", "6"]
// 2:支持对象类型组成的数组,但是要声明是根据哪几个对象属性去进行判重的
// 比如 let arr = [{name: 'a', age: 15}, {name: 'b', age: 15}, {name: 'a', age: 14}, {name: 'b', age: 15}];
// 调用RD(arr, ['name'])
// 返回 [{name: 'a', age: 15}, {name: 'b', age: 15}]
// 调用RD(arr, ['age'])
// 返回 [{name: 'a', age: 15}, {name: 'a', age: 14}]
// 调用RD(arr, ['name', 'age'])
// 返回 [{name: 'a', age: 15}, {name: 'b', age: 15}, {name: 'a', age: 14}]
// 3:最后一个参数代表 遇到重复的 优先保留前面的还是优先保留后面的
function RD(objs = [], attrs = [], desc = false) {
return ((o => (desc && objs.reverse(), objs.filter((item) => ((s => (s == '' ?
((t => (o[t] == void 0 && (o[t] = 1, !0) || !1))((item).toString() + (typeof item))) :
(o[s] == void 0 && (o[s] = 1, !0) || !1)
))(attrs.reduce((prev, cur) => prev + item[cur], ''))))))({}));
}