数组去重复方法总结

转载 2017年08月12日 16:25:34

数组去重复方法总结

//  方法一    思路:创建一个存放原数组第一个数的新数组,用原数组与新数组的数一一对比,不同则存放进新数组里
     function repArr(oldArr){
        var newArr=[oldArr[0]];
        for(var i=0;i<oldArr.length;i++){
            var repeat=false;
            for(var j=0;j<newArr.length;j++){
                if(oldArr[i]===newArr[j]){
                    repeat = true;
                     break;                    
                }                        
            }
            if(!repeat){
                 newArr.push(oldArr[i]) 
                }
        }
        return newArr;
     }
     var oldArr=[0,1,2,3,1,2]
     console.log(repArr(oldArr))
//  方法二    思路:  先将原数组排序,在与相邻的进行比较,如果不同则存入新数组。
             function repArr(oldArr){
                var reoldArr=oldArr.sort();
                var newArr=[oldArr[0]]
                for(var i=0;i<reoldArr.length;i++){
                    if(reoldArr[i]!=newArr[newArr.length-1]){
                         newArr.push(reoldArr[i])   
                    }
                }
                return newArr;
             }
             var oldArr=[0,1,2,3,1,2]
             console.log(repArr(oldArr))
方法三   思路:  利用对象属性存在的特性,如果没有该属性则存入新数组。   
            function repArr(oldArr){
                var newArr = [];
                var obj = {};
                for(var i=0; i<oldArr.length; i++){
                    if( !obj[oldArr[i]] ){                      
                        obj[oldArr[i]] = 1;
                        alert(obj)
                        newArr.push(oldArr[i]);
                    }
                }

                return newArr;
            }
             var oldArr=[0,1,2,3,1,2]
             console.log(repArr(oldArr));
方法四    思路:   利用数组原型对象上的includes方法。

            function repArr(oldArr){
                var newArr = [];             
                for(var i=0; i<oldArr.length; i++){
                    if( !newArr.includes(oldArr[i]) ){ // 如果newArr新数组包含当前循环item
                        newArr.push(oldArr[i]);
                    }
                }

                return newArr;
            }
            var oldArr=[0,1,2,3,1,2]
             console.log(repArr(oldArr));
方法五    思路:   利用数组原型对象上的 filter 和 includes方法。
            function repArr(oldArr){
                var newArr = [];             
                res = oldArr.filter(function(item){
                  return newArr.includes(item) ? '' : newArr.push(item);
                });          
                return newArr;
            }
            var oldArr=[0,1,2,3,1,2]
            console.log(repArr(oldArr)); 
方法六    思路:  利用数组原型对象上的 forEach 和 includes方法。
            function repArr(oldArr){
                var newArr = [];             
                oldArr.forEach(function(item){
                  newArr.includes(item) ? '' : newArr.push(item);
                });          
                return newArr;
            }
            var oldArr=[0,1,2,3,1,2]
            console.log(repArr(oldArr)); 
方法七    思路:  利用数组的indexOf下标属性来查询。
            function repArr(oldArr){
                var newArr = [];
                for(var i=0; i<oldArr.length; i++){
                    if(newArr.indexOf(oldArr[i]) == -1){
                        newArr.push(oldArr[i]);
                    }
                }

                return newArr;
            }
            var oldArr=[0,1,2,3,1,2]
            console.log(repArr(oldArr)); 
方法八    思路:   利用数组原型对象上的 splice 方法。
            function repArr(oldArr){
                var i,
                    j,
                    len = oldArr.length;             
                for(i = 0; i < len; i++){
                    for(j = i + 1; j < len; j++){
                        if(oldArr[i] == oldArr[j]){
                            oldArr.splice(j,1);
                            len--;
                            j--;
                        }
                    }
                }

                return oldArr;
            }
            var oldArr=[0,1,2,3,1,2]
            console.log(repArr(oldArr));
方法九     利用数组原型对象上的 lastIndexOf 方法。
            function repArr(oldArr){
                var newArr = [];             
                for(var i=0; i<oldArr.length; i++){
                    newArr.lastIndexOf(oldArr[i]) !== -1 ? '' : newArr.push(oldArr[i]);
                }            
                return newArr;
            }
            var oldArr=[0,1,2,3,1,2]
            console.log(repArr(oldArr));

数组的长度比较大的时候,不同方法的执行时间长短不同。

方法八的执行速度相对较慢。大家可以自己测试下。

var time3 = new Date().getTime();
  // 不同方法  
  ...
console.log('3所花时间: ' + (new Date().getTime() - time3));

原文:http://www.cnblogs.com/yuanbo88/p/7345331.html

js数组去重复的最优写法

1.创建一个新的数组存放结果 2.创建一个空对象 3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋...
  • js_admin
  • js_admin
  • 2017年08月21日 15:46
  • 312

java数组去重总结

1、背景 根据不同的业务逻辑,经常会遇到数组中存在多个重复元素的场合,总结了下数组的排序,留个记录。 2、实现方法 总结了四种方法,接下来进行展示 1、方法一 //数组去重方法一 Stri...
  • wenxuechaozhe
  • wenxuechaozhe
  • 2016年08月01日 11:30
  • 48356

JAVA数组去除重复数据

前一段时间被面试问到:如果一个数组中有重复元素,用什么方法可以去重?一时间会想到用一种方法,但是后来查阅资料后发现,有好多方法可以实现,现在就总结一下,比较简单的几种。一.用List集合实现 i...
  • u010680097
  • u010680097
  • 2016年08月29日 15:28
  • 13674

PHP二维数组去重的方法(保留各个键值的同时去除重复的项)-- 二维数组的唯一性

PHP二维数组去重的方法(保留各个键值的同时去除重复的项)-- 二维数组的唯一性 1、 二维数组内部的一维数组中的值不能完全相同,删除其中重复的项: 2、 二维数组内部的一维数组因某一个键值不能相...
  • dalaoadalaoa
  • dalaoadalaoa
  • 2015年08月26日 22:36
  • 8267

数组去重(c语言实现)

起因 在九度练习acm的时候,有道题我认为应该先进行数组去重操作,由于工作中我大部分都是用php写代码,php中数组去重只要一个array_diff()函数即可实现,但是到C语言中,我就没有现成的a...
  • zinss26914
  • zinss26914
  • 2012年10月16日 00:03
  • 16454

数组去重的方法总结

现在要求去重下面这个数组 [1, 2, 3, 3, 3, '0', '1', '2', '测试', '重复', '重复', NaN, NaN, false, false];方法一:ES6 Set() ...
  • shuidinaozhongyan
  • shuidinaozhongyan
  • 2017年05月19日 08:43
  • 893

C/C++面试之算法系列--去除数组中的重复数字

   去除数组中的重复数字 Sailor_forever  sailing_9806@163.com 转载请注明http://blog.csdn.net/sailor_8318/archive/200...
  • sailor_8318
  • sailor_8318
  • 2008年10月12日 03:07
  • 17351

数组去重,json数组去重

数组去重,接送数组去重1.借助json对象对数组进行去重,并计算重复的次数Array.prototype.unique = function (){ var key = {}; ...
  • xiaoyu_yhh
  • xiaoyu_yhh
  • 2017年06月26日 15:25
  • 263

字符串数组(String []) 去掉重复值的方法

import java.util.ArrayList; public class Try { /** * @去掉重复值*/     public static void main(String[] a...
  • fangzheng_2009
  • fangzheng_2009
  • 2009年11月03日 13:28
  • 14599

es6数组去重新方法

1.es6新方法去重,ES6里新添加了两个很好用的东西,set和Array.from。 set是一种新的数据结构,它可以接收一个数组或者是类数组对象,自动去重其中的重复项目 正常情况下,NaN ...
  • Miss_Fairy
  • Miss_Fairy
  • 2017年06月08日 21:08
  • 514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数组去重复方法总结
举报原因:
原因补充:

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