js .去重

new Set()

ES6 提供了新的数据结构 Set。它类似于数组(不是数组),但是成员的值都是唯一的,没有重复的值

    let arr = [1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10]
    let result = [...new Set(arr)]
    //或者
    // let result = Array.from(new Set(arr))
    console.log(result) //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Array.from

Set对象是ES6中新定义的数据结构,类似数组,它允许存储任何类型的唯一值,不管是原始值还是对象引用。

Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组

    let arr1 = [1, 2, 3, 4, 5, 5, 'ture', 'ture', 'ture', 'false', 'false']

    const arr2 = Array.from(new Set(arr1))
    console.log(arr2);
       //1,2,3,4,5,ture,false

json 对象去重

    let a = [{ a: 1 }, { b: 2 }, { c: 3 }]
    let b = [{ a: 1 }, { b: 2 }, { c: 3 }]

    let c = a.concat(b)
    console.log(c);

    const d = [...new Set(c.map(t => JSON.stringify(t)))].map(s => JSON.parse(s))
    console.log(d);

在这里插入图片描述
Set的方法说深一点就是比较的是内存地址,也就是 0,-0。比 === 更加紧准
而每一个对象都是有自己的相对应的内存地址,所以Set方法它是无法进行去重
上例就是让Set进行比较字符串,通过字符串进行去重。然后在进行JSON.parse转换回来

注意的是,JSON方法转换是无法转换function一些数据的
以下是个人理解 但是当我们将对象进行转换成字符串的时候,则Set所比较的就是是否相同,所占的空间,字节码是否一致
这时所比较的就是 string === string

filter()

使用 filter() 方法:使用 Array 的 filter() 方法可以根据指定条件筛选出满足条件的元素,从而实现去重。

const array = [1, 2, 2, 3, 4, 4, 5];
const uniqueArray = array.filter((value, index, self) => {
  return self.indexOf(value) === index;
});
console.log(uniqueArray); // [1, 2, 3, 4, 5]

reduce()

使用 reduce() 方法:使用 Array 的 reduce() 方法可以迭代数组并构建一个新的数组,根据条件判断是否添加元素到新数组中。

const array = [1, 2, 2, 3, 4, 4, 5];
const uniqueArray = array.reduce((acc, value) => {
  if (!acc.includes(value)) {
    acc.push(value);
  }
  return acc;
}, []);
console.log(uniqueArray); // [1, 2, 3, 4, 5]
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值