JavaScript数组去重的4种方法

原创 2018年04月17日 18:40:58

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

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。

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

Python全栈工程师-第4周

Python全栈工程师-第4周
  • 2017年09月15日 17:36

js数组去重的4种方法

js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototyp...
  • dz45693
  • dz45693
  • 2016-09-26 15:37:14
  • 680

javascript怎样数组去重并排序。效率最快的方法

function remove(arr){ var newarr=[]; var obj={}; for(var i=0;i
  • qq_35891080
  • qq_35891080
  • 2017-02-11 13:56:12
  • 125

js数组的去重和排序

var numbers = [20, 25, 25, 35, 15, 35, 15, 18, 58, 66, 45]; var n = []; var quchong = function (even...
  • u012267267
  • u012267267
  • 2016-12-13 16:25:07
  • 1150

使用JavaScript实现数组去重的几种方式

使用JavaScript实现数组去重的四种方式思考 使用indexOf()方法 Array.prototype.dupDect1=function(){ var res=[];//结果数组 ...
  • a1247529789
  • a1247529789
  • 2016-04-26 17:39:58
  • 335

JavaScript Array数组去重源码下载

  • 2017年06月29日 15:40
  • 2KB
  • 下载

JavaScript 数组去重的多种方法原理详解

说明数组去重,这是一个面试经常会遇见的问题,网上讲数组去重的文章也是特别的多,但是我们依旧来讲讲数组去重,这篇文章比较适合于接触过一段时间的JavaScript的初学者,希望这篇文章能给初学者带来一些...
  • FE_dev
  • FE_dev
  • 2017-06-02 14:24:14
  • 556

js中实现数组去重的5种方法

这是在逛网页的时候看到的方法,觉得以后会有用到的时候,就先收藏下来,这里是自己手敲的为了加深印象 遍历数组法最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点...
  • u012884402
  • u012884402
  • 2015-08-28 18:08:53
  • 1557

数组去重4种方法

var arr=[1,2,3,4,2,3,1,5,3]; //去重 方法一:for..in... function removeRepeat(arr){ var newArr=[]; for...
  • weixin_39921345
  • weixin_39921345
  • 2017-10-12 18:48:18
  • 62

JS — 数组去重(4种方法)

js对数组进行去重复,记下来,方便以后直接可用。 第一种:双重循环 var ary=[1,2,3,3,2,3,4,5]; for(var i=0;i...
  • zhuyangru
  • zhuyangru
  • 2017-03-25 22:35:37
  • 229
收藏助手
不良信息举报
您举报文章:JavaScript数组去重的4种方法
举报原因:
原因补充:

(最多只允许输入30个字)