js数组去重的方法

js数组去重的方法

  js数组去重的几种常用的方法

1.利用两层循环

  判断每个位置上的元素与之后元素是否相同,相同的话使用splice()方法删除。

var arr = [1,2,2,3,3,3,'a','b','b','c','c','c'];
        for(var i=0,len=arr.length-1;i
2.使用indexOf()方法去除重复的元素。

  数组中的indexOf()方法,传入要查找的元素,返回值为首个被找到的元素在数组中的索引位置,若没有找到则返回 -1。

        var arr = [1,2,2,3,3,3,'a','b','b','c','c','c'];
        var newArr = [];
        for(var i=0,len=arr.length;i
3.使用filter

  filter()用于把Array的某些元素过滤掉,然后返回剩下的元素。它接收一个函数,然后把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
  filter()接收回调函数时,回调函数可以接收三个参数,第一个参数表示Array的某个元素,第二个表示元素的位置,第三个表示数组本身。
  去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了

        var newArr, arr = [1,2,2,3,3,3,'a','b','b','c','c','c'];
        newArr = arr.filter(function (element, index, self) {
            return self.indexOf(element) === index;
        });
        console.log(newArr);//[1, 2, 3, "a", "b", "c"]
4.使用set与Array.from()

  这两个东西在es6中新增的,Set是新的数据结构 ,它类似于数组,但是成员的值都是唯一的,没有重复的值。Array.from方法可以将 Set 结构转为数组。

	var arr = [1,2,2,2,3,3,null,null];
    var newArr = Array.from(new Set(arr));
    console.log(newArr);//[1,2,3,null]

  set可以接受一个数组或一个类数组对象,自动去重其中的重复元素,但返回的是一个对象,并不是我们想要的数组,所以Arrayy.from()它的作用是将类数组对象转化为数组,所以就有了上面的数组去重方法

你可能感兴趣的:(javascript)