
js--数组去重
发布日期:2021-05-09 09:16:55
浏览次数:17
分类:博客文章
本文共 1851 字,大约阅读时间需要 6 分钟。
数组去重
通过es6的集合对象Set来实现去重
let arr=[1,2,3,4,5,6,1,2,3]; function unique(arr){ return Array.from(new Set(arr)) }; console.log(unique(arr));
Set对象是一组不重复的值,重复的值会被忽略,new Set(arr)得到Set(6)[1,2,3,4,5,6]
数组的from方法用于通过拥有 length 属性的对象或可迭代的对象来返回一个数组。如果对象是数组返回 true,否则返回 false。
from方法有三个参数,第一个参数为需要转化的对象,第二个参数是每个元素调用的函数,第三个参数指定第二个元素函数的this对象,Array.from('123',x=>x*10) ==> Array(3)[10,20,30]高级点写法:return [...new Set(arr)]通过es5常用的嵌套for循环实现,i,j两个指针分别指向两个值,首先取得数组的第一个值arr[i],然后从数组第二个值开始遍历arr[j],如果遇到相等的数值,说明这两个值重复,然后数组的splice方法删除遇到的相等的值,同时把j指针后退1位,因为删除了元素后,再次遍历的值应该还是在该位置,直到完成循环。
function unique(arr){ for (let i = 0; i < arr.length; i++) { for (let j = i+1; j < arr.length; j++) { if(arr[i]==arr[j]){ arr.splice(j,1) j-- } } } return arr } console.log(unique(arr))
splice方法用于添加或删除数组中的元素。
splice()有三个参数,第一个参数为必需,该参数必须是数字,表示删除或者添加元素的下标,第二个参数是删除元素的个数,第三个以及之后为添加的元素首先定义一个空数组,遍历需要去重的数组,每一项和空数组中的元素对比,如果存在,就继续遍历,不存在就放入到定义的数组
function unique(arr){ let array=[] for (let i = 0; i < arr.length; i++) { if(array.indexOf(arr[i])=== -1){ array.push(arr[i]) } } return array } console.log(unique(arr))
indexOf()返回数组中指定元素的下标,如果数组中不存在就返回-1,第一个参数为查找的元素,第二个参数规定开始索引的位置,它的合法取值是 0 到 stringObject.length - 1
利用filter()方法创建一个新数组,数组中的元素是对指定数组中进行判断符合条件的项,
function unique(arr){ return arr.filter(function(item,index,arr){ return arr.indexOf(item,0)===index }) } console.log(unique(arr))
array.filter(function(currentValue,index,arr), thisValue)
filter()有两个参数,第一个参数为对指定数组判断的条件,函数,指定数组中的每一项都必须执行该函数,currentValue(必须。当前元素的值),第二个参数thisValue,可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"当前元素的下标等于arr.indexOf(item,0)时,返回该元素,若不相等,说明该元素重复,不用返回。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月30日 11时08分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
VMware克隆虚拟机后重启network失败
2019-03-14
Hbase压力测试
2019-03-14
在IDEA中用jdbc技术通过配置文件连接mysql数据库连接池
2019-03-14
StreamReader & StreamWriter
2019-03-14
C#中的类、方法和属性
2019-03-14
Python入门基础知识点讲解:输入和输出
2019-03-14
Python爬取清朝末年医书:《醉花窗医案》,看看病症情况
2019-03-14
Python爬虫训练:爬取酷燃网视频数据
2019-03-14
Python新一代数据可视化神器:Plotly动画展示
2019-03-14
Python数据分析入门(十九):绘制散点图
2019-03-14
大佬谈接口自动化,我是这样做测试框架开发的……
2019-03-14
Codeforces Round #699 (Div. 2) A B
2019-03-14
备受关注的区块链技术应用领域都有哪些?
2019-03-14
C++版浙大PAT乙级1069(20分)测试点3答案错误解决方法
2019-03-14
hive内部错误
2019-03-14
Error:scalac: bad option: '-make:transitive'
2019-03-14
微软xp壁纸rgb
2019-03-14
浏览器刷新页面
2019-03-14