JavaScript数组去重的4种方法

更多内容,欢迎关注微信公众号“让知识成为资产”。

1.基本的去重方法

function findInArr(n ,arr){   //创建函数,查找一个数在当前数组中是否存在
     for (var i = 0; i < arr.length; i++) {
              if (n == arr[i])  return true;     //如果存在,返回true
     }
     return false;  //不存在返回false
}

function select (arr){
     var arr2 = [] ;  //创建空数组,用来保存去重后的新数组
     for(var i = 0; i < arr.length; i++){     //循环原数组
          if (!findInArr(arr[i],arr2)) {     //调用findInArr方法,查找当前arr[i]在arr2中是否存在 
              arr2.push(arr[i]);   //如果返回false,就把当前这个数 arr[i] ,push到新的数组 arr2中
          }
     }
     return arr2;  //返回去重后的新数组
}

JavaScript sort() 方法
定义和用法——

  • sort() 方法用于对数组的元素进行排序。
  • 排序顺序可以是字母或数字,并按升序或降序。
  • 默认排序顺序为按字母升序。

注意——

  • 当数字是按字母顺序排列时”40”将排在”5”前面。
  • 使用数字排序,你必须通过一个函数作为参数来调用。
  • 函数指定数字是按照升序还是降序排列。
  • 这种方法会改变原始数组。

语法——array.sort(sortfunction)

参数——

  • sortfunction:可选。规定排序顺序。必须是函数。
  • 数字升序排序:function(a,b){return a-b};
  • 数字降序排序:function(a,b){return b-a};

返回值——对数组的引用。数组在原数组上进行排序,不生成副本。

JavaScript push() 方法
定义和用法——push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
语法——array.push(item1, item2, …, itemX);
参数——至少一个参数,添加到数组。
返回值——把指定的值添加到数组后的新长度。
注意——新元素将添加在数组的末尾; 此方法改变数组的长度。

2.利用对象的属性去重(推荐)

function select (arr){
     var json = {};  //创建一个空的json
     var arr2 = [] ;
     for (var i = 0; i < arr.length; i++) {  
         if (!json[arr[i]]) {  //在对象中访问这个属性,如果存在就说明重复,!json[arr[i]],取反说明不存在
              json[arr[i]] = true;  //这样可以对其进行赋值,赋值随意
              arr2.push(arr[i])  //
         }
     }
     return arr2;
}

3.先排序再去重

function select(arr){
     arr.sort();   //用sort 进行简单排序,相同的数字一定被排到了一起
     for (var i = 0; i < arr.length; i++) {   //对排序之后的数组遍历
          if (arr[i] == arr[i+1]) {   //让当前的数和下一个数进行比较
             arr.splice(i,1);   //如果相等,用splice(i,1) 方法对其进行删除
             i--;
          }
     }
     return arr;  //返回去重后的新数组
}

JavaScript splice() 方法
定义和用法——splice() 方法用于插入、删除或替换数组的元素。
注意——这种方法会改变原始数组。
语法——array.splice(index,howmany,item1,…..,itemX);
参数——

  • index:必需。规定从何处添加/删除元素。该参数是开始插入或删除的数组元素的下标,必须是数字。
  • howmany:必需。规定应该删除 多少元素。必须是数字,但可以是 “0”。如果未规定此参数,则删除从 index开始到原数组结尾的所有元素。
  • item1, …, itemX:可选。要添加 到数组的新元素。

4.使用数组的indexOf方法(IE8不兼容)

function select (arr){
     var arr2 = [];
     for( var i = 0; i < arr.length; i++){
          if (arr2.indexOf(arr[i]) == -1)  //通过判断arr2.indexOf(arr[i]) == -1,来确定新数组arr2中没有arr[i]
              arr2.push(arr[i]);  //将其添加到数组arr2中
     }
     return arr2;  //返回新数组arr2
}

JavaScript indexOf() 方法
定义和用法——indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果没有找到匹配的字符串则返回 -1。
注意—— indexOf() 方法区分大小写。
语法——string.indexOf(searchvalue,start);
参数值——

  • searchvalue:必需。规定需检索的字符串值。
  • start:可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 string Object.length -1。如省略该参数,则将从字符串的首字符开始检索。

返回值——查找指定字符串第一次出现的位置,如果没找到匹配的字符串则返回 -1。

更多内容,欢迎关注微信公众号“让知识成为资产”。

阅读更多

没有更多推荐了,返回首页