JS 数组去重的多种方法
创始人
2024-03-25 18:11:18
0

  • 1. 前言

  • 2. 普通方法数组去重

  • 3. filter + indexOf

  • 4. ES6 的 new Set()

  • 5. 需要注意的问题

1. 前言


本文提供两个数组变量供测试使用

const array = ['html', 'css', 'js', 'css']const resArr = ['html', 'css', 'css', [1], [1]]

2. 普通方法数组去重


下面列举几种数组去重的方法思路都一样:

遍历数组,将数组元素添加到新数组中,新数据中已有该元素,则不添加到新数组

// for + indexOfconst res = [];for (let index = 0; index < array.length; index++) {    res.indexOf(array[index]) === -1 && res.push(array[index])}// forEach + indexOfconst res = [];array.forEach(item => {    res.indexOf(item) === -1 && res.push(item)})// reduce + includesconst res = array.reduce((total, item) => {    !total.includes(item) && total.push(item)    return total;}, [])

3. filter + indexOf


使用 filter + indexOf 的方式可以使代码变为更简洁

filter() 方法过滤数组,只保留满足条件的元素。indexOf() 方法判断元素首次出现的下标是否为当前遍历的下标

// ['html', 'css', 'js']const res = array.filter((item, index) => array.indexOf(item) === index)

4. ES6 的 new Set()


利用 Set 结构不能接收重复数据的特点

const res = [...new Set(array)]

5. 需要注意的问题


当数组中存在引用类型的元素时,引用类型元素无法保持唯一性

const resArr = ['html', 'css', 'css', [1], [1]]// ['html', 'css', 'css', [1], [1]]const res = resArr.filter((item, index) => resArr.indexOf(item) === index)

 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...