JS 数组去重的四种方法

1、通过遍历原数组和新数组是否重复。new一个新数组存放已经遍历过的、唯一的元素。

function uniqueArr(list){

  var newArr= [list[0]];

  for(var i=1;i<list.length;i++){

    var isRepeat = false;

    for(var j=0;j<newArr.length;j++){

      if(list[i] == newArr[j]){

        isRepeat= true;

        break;

      }

    }

    if(!isRepeat){

      newArr.push(list[i]);

    }

  }

  return newArr;

}

var arr=[‘a‘,‘b‘,‘c‘,‘a‘,‘b‘];

uniqueArr(arr);         //output:["a", "b", "c"]

2、通过先排序,再与相邻的元素进行比较去重(排序之后相同的元素会相邻)

function uniqueArr(list){

  list.sort();//对数组进行排序

  var newArr= [];

  for(var i=1;i<list.length;i++){

    if(list[i]!=list[i+1])    newArr.push(list[i]);

  }

  return newArr;

}

var arr=[‘a‘,‘b‘,‘c‘,‘a‘,‘b‘];

uniqueArr(arr);         //output:["a", "b", "c"]

3、新建一个对象进行存放,再遍历数组,判断对象是否存在该值(obj[i])

function uniqueArr(list){

  var obj= {},newArr=[list[0]];

  obj[list[0]]=true;

  for(var i=1;i<list.length;i++){

    if(!obj[list[i]]){

      obj[list[i]]=true;

      newArr.push(list[i]);

    }

  }

  return newArr;

}

var arr=[‘a‘,‘b‘,‘c‘,‘a‘,‘b‘];

uniqueArr(arr);         //output:["a", "b", "c"]

4、通过indexOf进行判断(新建一个数据存放唯一的元素,遍历原数组判断(newArr.indexOf(oldArr[i])==-1))

function uniqueArr(list){

  var newArr=[list[0]];

  for(var i=1;i<list.length;i++){

    if(newArr.indexOf(list[i])==-1){

      newArr.push(list[i]);

    }

  }

  return newArr;

}

var arr=[‘a‘,‘b‘,‘c‘,‘a‘,‘b‘];

uniqueArr(arr);         //output:["a", "b", "c"]

时间: 2024-08-07 08:17:39

JS 数组去重的四种方法的相关文章

js数组去重的四种方法

//第一种方法 Array.prototype.removeDuplicate = function() { var n = []; for (var i = 0; i < this.length; i++) { if (n.indexOf(this[i]) == -1) { n.push(this[i]); } } return n; } var arr = [1, 2, 3, 3, 2, '我', '我', 34, '我', NaN, NaN]; var m1 = arr.removeDup

JavaScript数组去重的四种方法

今天,洗澡的想一个有趣的问题,使用js给数组去重,我想了四种方法,虽然今天的任务没有完成,5555: 不多说,po代码: //方法一:简单循环去重    Array.prototype.unique1 = function(){                var temp = [];        for(var i=0; i < this.length; i++){            if(temp.indexOf(this[i]) == -1){                tem

js数组去重的4种方法

js数组去重,老生长谈,今天对其进行一番归纳,总结出来4种方法 贴入代码前 ,先对浏览器Array对象进行支持indexOf和forEach的polyfill Array.prototype.indexOf = Array.prototype.indexOf || function(item) { for (var i = 0, j = this.length; i < j; i++) { if (this[i] === item) { return i; } } return -1; } Ar

原生JS数组去重的几种方法

有时候我们做项目的时候往往会需要把数组里面一些重复的项去掉,但是原生JS有排序,有筛选等等,但是就是没有数组去重怎么办呢?这能怎么办,自己手动实现嘛.(以下代码直接在原型上添加的的方法,为的就是和原生JS方法类似)可以达到Array.xxx()这样的效果 第一种方法:创建空数组利用indexOf方法检测就数组的项是否在新数组中. Array.prototype.unique=function(){ var arr=[];//创建新数组 for(var i=0;i<this.length;i++)

js数组去重的两种方法

数组去重这种问题经常会遇到,解决方法也有很多,这里就总结两种比较常用的方法. 方法一 第一种方法的思路:遍历数组里的元素,由第一个元素开始依次按照顺序与其后面的元素相比较,如果不同则不用管,相同则把其后所被比较的元素去除.这样所有元素循环一遍,数组中重复的元素就能全部去除. 代码: <script> var arr = [1, 5, 7, 6, 3, 2, 5, 4, 6, 9, 5, 1, 2, 3, 5, 4, 8, 9, 5, 4, 5, 0];     for (var i = 0;

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

第一种:双重循环 var strCode='zxcvbnmasdfghjklopiuytrewqAWEDRFTGYHUJIK'; var str=''; for(var i=0;i<4;i++){ var rand=Math.round(Math.random()*61); if(str.indexOf(strCode.charAt(rand))==-1){ str+=strCode.charAt(rand); }else{ i--; } } console.log(str); 第二种:新数组 

js数组去重的几种方法

三种方法 利用indexOf判断新数组 underscore.js中实际上也是使用的类似的indexOf //传入数组 function unique1(arr){ var tmpArr = []; for(var i=0; i<arr.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if(tmpArr.indexOf(arr[i]) == -1){ tmpArr.push(arr[i]); } } return tmp

JS数组去重的三种方法

<!DOCTYPE html> <html>     <head>         <meta charset="UTF-8">         <title>数组去重</title>     </head>     <body>         <script type="text/javascript">             //注意有一个元素是空的

js 数组去重的三种方法(unique)

方法一: Array.prototype.unique=function(){ var arr=[];//新建一个临时数组 for(var i=0;i<this.length;i++){//遍历当前数组 if(arr.indexOf(this[i])==-1){//当前数组的第i个值在新数组中找不到,则添加到新数组中去 arr.push(this[i]); } } return arr; }; 方法二: Array.prototype.unique=function(){ var arr=[];