// 数组去重方法 // 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], ‘‘))))))({})); }
原文:https://www.cnblogs.com/beiyudaoke/p/14381471.html