js数组去重 --filter和排序去重

方法一 filter过滤器

利用数组中的filter方法.filter()接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数element,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置index和数组本身self.

filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。

filter去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。

 var arr =['apple','strawberry','banana','pear','apple','orange','orange','strawberry',1,2,2,1];
  var r = arr.filter(function(element,index,self){
    return self.indexOf(element) === index;
 });
   console.log( r );

js数组去重 --filter和排序去重_第1张图片

方法二、先排序再去重

思想:

  1. 先将待排序的数组排序 (设为排好序的为数组①,方便理解)
  2. 新建一个空数组(设为数组②)
  3. 将①的第一项放入到②中
  4. 遍历①中的每一项,当①【i】的值≠②的最后一项时,将①的此元素放入到②中
  5. 最后返回数组②

sort()方法会调用每个数组项的toString()方法,得到字符串,然后再对得到的字符串进行排序。所以直接用sort会得到1,100,2…的排序。虽然有点小瑕疵,但是能实现排序,当数组里既有数字也有字符串型的也能排出来。




	
	






js数组去重 --filter和排序去重_第2张图片

你可能感兴趣的:(JavaScript)