JS数组去重的常用4种方法

JS数组去重的常用4种方法

1.ES6的Set类数组去重 var arr = [1,2,2,3,3,4,4,1,5,6,6,5] function unique (arr) { return Array.from(new Set(arr)) } console.log(unique(arr)) //[1,2,3,4,5,6]

ES6的Set是类数组,里面的值是唯一的,但是不是真正的数组所以要通过Array.from()方法转化为数组,不考虑兼容问题是最简单的去重方法

2.for循环嵌套for循环 var arr = [1,2,2,3,3,4,4,1,5,6,6,5]; function unique(arr) { for (var i = 0; i < arr.length; i++) { // 首次遍历数组 for (var j = i + 1; j < arr.length; j++) { // 再次遍历数组 if (arr[i] == arr[j]) { // 判断连个值是否相等 arr.splice(j, 1); // 相等删除后者 j--; } } } return arr } console.log(unique(arr));

两个for循环加上spliceES5常用的方法
第一个for遍历每个数组项,第二个for循环遍历第一个for循环当前遍历项后面的数组项与第一个for当前数组项作比较,后面存在相等的项,则删除掉此项,并且j要减一,因为删除了一项,所以后面的元素往前移了,所以减一来抵消迁移确保每一项遍历完

3.indexOf去重 var arr = [1,2,2,3,3,4,4,1,5,6,6,5]; function unique(arr) { if (!Array.isArray(arr)) { console.log('错误!') return } var array = []; for (var i = 0; i < arr.length; i++) { // 首次遍历数组 if (array.indexOf(arr[i]) === -1) { // 判断索引有没有等于 array.push(arr[i]) } } return array } console.log(unique(arr));

indexOf()会判断数组里面是否含有这个值,没有则返回-1,有则返回存在的数组下标值,有多个只返回第一个,不再继续判断
for循环加indexOf,for循环存在newArr里则什么都不做,不存在则加入新数组里,返回新数组

4.利用filter var arr = [1,2,2,3,3,4,4,1,5,6,6,5]; function unique(arr) { return arr.filter( (item, index, arr) => { //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素 return arr.indexOf(item) === index; }); } console.log(unique(arr));

filter加indexOf,判断当前的索引值等不等于indexOf返回的索引值,等于就是同一个数组项,不等于的情况就是当前的item是第二次出现,而indexOf判断出来的下标值还是第一个,这一项则不会返回,所以达到了去重的要求

更多关于JS数组去重的方法请查看下面的相关链接

推荐阅读

    lol常用设置|lol有用的设置

    lol常用设置|lol有用的设置,,lol常用设置如何设置英雄联盟手游萊垍頭條在英雄联盟手游中,想要设置:萊垍頭條1.萊垍頭條首先需要进入游戏,萊垍

    excel常用函数都有哪些?

    excel常用函数都有哪些?,函数,哪些,常用,1、SUM函数:SUM函数的作用是求和。函数公式为=sum()例如:统计一个单元格区域:=sum(A1:A10)  统计多个

    PPS播放时禁止广告窗口的一种方法

    PPS播放时禁止广告窗口的一种方法,,当使用PPStream播放视频。你可以经常弹出一些广告窗口,如果你想禁止这些广告,你可以使用下面的方法: 点

    fcpx重做快捷键|fcpx常用快捷键

    fcpx重做快捷键|fcpx常用快捷键,,1. fcpx常用快捷键command+T,fcpx 叠化转场2. FCPX快捷键有个快捷键苹果键加上箭头加R就是调整速度的3. f

    ps各种快捷键|PS快捷键大全常用

    ps各种快捷键|PS快捷键大全常用,,PS快捷键大全常用工具类快捷键:移动工具:V套索工具:L(按住shift增加选区,按住ALT减少选区)魔棒工具:W吸管工具:I(

    postgresql的ALTER常用操作

    postgresql的ALTER常用操作,字段,数据类型,postgresql版本:psql (9.3.4)1、增加一列ALTER TABLE table_name ADD column_name datatype;

    电脑桌规格型号|常用电脑桌尺寸

    电脑桌规格型号|常用电脑桌尺寸,,常用电脑桌尺寸问:台式电脑桌最合适宽度?答: 台式电脑桌最合适宽度,现在的显示器都是液晶的不占地方,所以