js--数组去重
发布日期:2021-05-09 09:16:55 浏览次数:17 分类:博客文章

本文共 1851 字,大约阅读时间需要 6 分钟。

数组去重

  1. 通过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)]

  2. 通过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()有三个参数,第一个参数为必需,该参数必须是数字,表示删除或者添加元素的下标,第二个参数是删除元素的个数,第三个以及之后为添加的元素

  3. 首先定义一个空数组,遍历需要去重的数组,每一项和空数组中的元素对比,如果存在,就继续遍历,不存在就放入到定义的数组

    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

  4. 利用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)时,返回该元素,若不相等,说明该元素重复,不用返回。

上一篇:js--数组的map()方法的使用
下一篇:js基本数据类型--null和undefined的区别

发表评论

最新留言

不错!
[***.144.177.141]2025年04月30日 11时08分02秒