数组去重的几种实现方法。

传统的去重思路大致如下。

  声明一个新的数组,在把旧的数组依次往新的数组里面push,如果遇到新数组已有的对象,就不push.

var arr =[1,3,3,3,5,6,6,7,8,1,5,9,5];
var newArr = [];
//先声明一个对比的方法
function findInArr(arr,n){
      for(var i=0;i<arr.length;i++){
            if(arr[i]==n)return true;//找到相似的返回true
      }
    return false;//遍历完没有找到相似的返回 false
}    

for(var i=0;i<arr.length;i++){
    if(!findInArr(newArr,arr[i])){
          newArr.push(arr[i])
    }
}

console.log(newArr)//返回去重后的数组

另一种解决的思路是数组集合里面每次比对两个邻近对象,后一个和前一个相同,就slice掉后一个。

var arr = [23,3,43,4,4,5,5,6,6,6,6,23];
// 23,3,4,5,6

for(var i = 0 ;i<arr.length;i++){
    for(var j = i+1;j<arr.length;j++){
        if(arr[i]==arr[j]){
            arr.splice(j,1);
            j--;//去重后后退一位再继续遍历
        }
    }
}console.log(arr);//返回去重后的数组

上述两种方法都是进行了两次loop,在处理较大的数据时运行效率就比较低下了。

下一种方法效率应该会更高一些,只进行了一次loop;

var arr = [23,3,43,4,4,5,5,6,6,6,6,23];
//思路如下,先对数组进行排序,升序或者降序都可以
arr.sort(function(n1,n2){
   return n1-n2;
});

for(var i = 0 ;i<arr.length;i++){
     if(arr[i]==arr[i+1]){
          arr.slice(i+1,1);
          i--;
     }
}
console.log(arr);

数组去重应该还有蛮多的方法,以前用过循环对象字面量赋值的方法。下次有时间,在补上了。

时间: 2024-10-11 17:42:25

数组去重的几种实现方法。的相关文章

数组去重的几种常见方法?

数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i < array.length; i++){ if(temp.indexOf(array[i]) == -1){ temp.push(array[i]); } } retur

JS数组去重的几种常见方法

JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i < array.length; i++){ if(temp.indexOf(array[i]) == -1){ temp.push(array[i]); } } ret

数组去重的几种实现方法

1. 使用Set ES6 提供了新的数据结构Set, 它类似数组,和C++中的set容器一样,它成员的值都是唯一的,没有重复的值:Set本身是一个构造函数,用来生成Set数据结构. var s = new Set(); s.add("hello").add("goodbye").add("hello"); s.size === 2; s.has("hello") === true; const s = new Set(); [

数组去重的几种方法

JS数组去重的几种常见方法 JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i < array.length; i++){ if(temp.indexOf(array[i]) == -1){ temp.push(arra

js中数组去重的几种方法

js中数组去重的几种方法         1.遍历数组,一一比较,比较到相同的就删除后面的                 function unique(arr){                         for(var i=0;i<arr.length;i++){                                 for(var j=i+1;j<arr.length;j++){                                         if(ar

Javascript数组去重的几种方法

Javascript数组去重的几种方法 新建空数组,通过for...of(ES6)循环遍历,通过indexOf判断元素是否在新数组中存在,将不存在的(indexOf(n)==-1)元素push到新数组中: let arr = [1,1,2,2,3,6,3,77,88,5,98,9,7,2,7,5,3,4,2]; function removeDup_indexOf(originalArr){ let newArr = []; for(n of originalArr){ if(newArr.in

【学】数组去重的3种方式

数组去重的3种方式 var arr = [1,4,2,3,4,5,6,7,3,4,5,23,2,3,4,5,3,2,3,4,5];   function findInArray(n,arr){ for (var i=0; i<arr.length; i++) { if(arr[i]==n){ return true; } } return false; }   function removeRep1(arr){ //方法2 var arr1 = []; for (var i=0; i<arr.

有序数组去重的几种算法

最差的算法: 最差的算法: 去重,与数组是否有序无关 public void noDups(){ //从0开始遍历 for(int i=0; i<nElems-1; i++){ //与后面每一个比较 for(j=i+1; j<nElems; j++){ //如果相等,后面的所有的项向前移动,总数-1 if(a[i]==a[j]){ for(k=j+1; k<nElems; k++){ a[j] = a[j+1]; nElems--; } } } } } 把后面不同的往前 public v

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