数组去重键位发生改变_数组方法的那些淫技巧之 数组去重

博客主要讨论数组去重方法,提到在未接触ES6时的常规做法,学完ES6后发现其数组去重方式十分便捷,如使用reduce方法可减少代码量。还指出新语法不兼容问题可通过脚手架配置babel或自行使用babel转换解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组去重,你第一想到的方法是啥?

这样:?

// 定义一个数组const arr = [1,2,3,4,4,5,7,7,6]// 定义一个对象存储已经遍历过的值let obj = {}// 定义保存去重后的数组let newArr = []// 循环遍历数组for(let i = 0; i < arr.length; i++) {// 判断是否已经遍历过这个相同的值// 是没有遍历过的值的话   if(!obj[arr[i]]){     // 保存到去重的数组中        newArr.push(arr[i])     // 在对象中记录这个值已经遍历过了        obj[arr[i]] = i    }}console.log(newArr)// [1, 2, 3, 4, 5, 7, 6]

没毛病,已经解决了数组去重的这个需求,这在我还没接触 es6 时确实是这样干的,在学完 es6 后,我发现 es6 的数组去重方试真的方便的不要不要的

比如你可以这样简单的去重(reduce):

// 定义一个数组const arr = [1,2,3,4,4,5,7,7,6]let newArr = arr.reduce((pre,cur)=>{    // 判断上一次调用回调时返回的累积值数组里面    // 有没有正在循环的这个值    if(!pre.includes(cur)){    // 没有就拼接到上一次调用回调时返回的累积值数组里面    // 并作为回调的返回值      return pre.concat(cur)    }else{    // 有的话直接返回上一次调用回调时返回的累积值数组      return pre    }    // 把 [] 空数组作为第一次调用 callback函数时的第一个参数的值},[])console.log(newArr)

是不是代码少了很多?什么还不是少的很明显?好吧,接下来的方式就很明显了

// 定义一个数组const arr = [1,2,3,4,4,5,7,7,6]// 去重let newArr = [...new Set(arr )]console.log(newArr)

是不是明显少了很多代码量,哈哈哈! 还有别的简单的,小伙伴们可以去探索探索,可以提高不少板砖效率的

可能会说新语法不兼容的问题,其实呢,我们大部分的搬砖都是使用脚手架的,大部分的脚手架都有配置 babel 来把新的语法转为 es5 的,在没有用到脚手架的也可以自己使用 babel 来转换一下

在最后给你们推荐个有趣的东西 --- 我的个人视频号,不定时发表一些关于程序员的搞笑视频,或者学习视频,有兴趣的可以关注一波哦,哈哈哈?

92a81caa1b560c27ca18298b5ea92807.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值