Open chenfan0 opened 2 years ago
/**
* 数组去重
* @param {*} arr 待去重数组
* @param {*} unique_key 依据数据结构中的哪个标识去去重
* @returns
*/
function unique(arr, unique_key) {
return Object.values(arr.reduce((acc, cur) => (acc[cur[unique_key]] = cur, acc) , {}))
}
const user = [
{
uid: 1, uname: '用户1',
},
{
uid: 2, uname: '用户2',
},
{
uid: 3, uname: '用户3',
},
{
uid: 4, uname: '用户4',
},
{
uid: 1, uname: '用户1',
},
]
console.log(unique(user, 'uid'))
代码中此处 (acc, cur) => (acc[cur[unique_key]] = cur, acc)
利用逗号的特性,先对 acc 做一系列逻辑处理,然后返回 acc
注意:下面的arr参数为存放基本数据类型的数组。
方式一:使用数据结构Set帮助我们进行去重。
方式二:通过循环+includes进行去重。
方式三:通过filter + indexOf进行去重。
其实还会有一些其他的方法进行去重,但是本质上就是通过循环加上判断当前的值是否已经添加过。