Javascript数组去重的几种方法

Javascript数组去重的几种方法

  1. 新建空数组,通过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.indexOf(n)==-1){
                newArr.push(n);
            }
        }
        return newArr;
       }
       let arr1 = removeDup_indexOf(arr);

    也可首先将原始数组的第一项放到新数组中,从第二项开始循环判断:

     let arr = [1,1,2,2,3,6,3,77,88,5,98,9,7,2,7,5,3,4,2];
     function removeDup_index(originalArr){
        //index=0的项先加到数组里,之后从第二项开始循环
        let newArr = [originalArr[0]];
        for(var i=1;i<originalArr.length;i++){
            if(originalArr.indexOf(originalArr[i])==i){
                newArr.push(originalArr[i]);
            }
        }
        return newArr;
       }
       let arr2 = removeDup_index(arr);
  2. 利用相邻数组的比较,将与前一个元素不同的元素push到数组中,注意:这种方式要首先将数组进行排序,用slice()方法深拷贝原始数组进行排序,避免对原数组造成影响。
    let arr = [1,1,2,2,3,6,3,77,88,5,98,9,7,2,7,5,3,4,2];
    function compareAdjoin(originalArr){
           let orderedArr = originalArr.slice().sort();//先进行排序,然后相邻的数组元素进行比较
           let newArr = [orderedArr[0]];
           for(var i=1;i<orderedArr.length;i++){
                if(orderedArr[i]!=orderedArr[i-1]){
                    newArr.push(orderedArr[i]);
                }
           }
           return newArr;
       }
       let arr3 = compareAdjoin(arr);
  3. 利用object{key:value}, key值不能重复的特性。创建一个新的obj{ },将数组的每个元素作为key添加到obj中,并将obj[arr[i]]不存在的元素push到新数组中 ,obj= { arr[1]: value,arr[2]:value...}注意:无需关注value的值,可任意复制,仅是通过key判断元素是否已添加过。
     let arr = [1,1,2,2,3,6,3,77,88,5,98,9,7,2,7,5,3,4,2];
     function removeDup_obj(originalArr){
            let newArr=[];
            let obj={};
            for(n of originalArr){
                if(!obj[n]){
                    obj[n] = 1;
                    newArr.push(n);
                }
            }
            return newArr;
       }
       let arr4 = removeDup_obj(arr);
  4. 倒叙循环(避免删除过程中数组长度变化影响遍历)排序过的数组,将与后一项相同的元素通过splice方法从原数组中删除,同#2,首先将数组进行排序,用slice()方法深拷贝原始数组进行排序,避免对原数组造成影响。
     let arr = [1,1,2,2,3,6,3,77,88,5,98,9,7,2,7,5,3,4,2];
     function removeDup_splice(originalArr){
           let orderedArr = originalArr.slice().sort();
           for(var i = orderedArr.length-1;i>0;i--){
                if(orderedArr[i-1]===orderedArr[i]){
                    orderedArr.splice([i-1],1);
                }
           }
           return orderedArr;
       }
       let arr5 = removeDup_splice(arr);

原文地址:https://www.cnblogs.com/Nancy-wang/p/9015435.html

时间: 2024-10-14 22:24:46

Javascript数组去重的几种方法的相关文章

javascript数组去重的3种方法

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>数组去重</title> </head> <body> <script type="text/javascript"> //注意有一个元素是空的 var test1 = [0,0,1,1,2,'sss',2,,3,'abc',3,4,4,'s

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中数组去重的几种方法

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数组去重的7种方式

1.利用额外数组 function unique(array) {    if (!Array.isArray(array)) return;     let newArray = [];    for(let i=0, len=array.length; i<len; i++) {        let itemAtIndex = array[i];        if (!newArray.includes(itemAtIndex)) { // newArray.indexOf(itemAt

数组去重的几种方法

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

javascript中数组去重的4种方法

面试前端必须准备的一道问题:怎样去掉Javascript的Array的重复项.在最近面试中,百度.腾讯.盛大等都在面试里出过这个题目.这个问题看起来简单,但其实暗藏杀机. 考的不仅仅是实现这个功能,更能看出你对计算机程序执行的深入理解. 我总共想出了三种算法来实现这个目的: 方法一: Array.prototype.unique1 = function() {     var n = []; //一个新的临时数组     for(var i = 0; i < this.length; i++)

关于数组去重的几种方法-------javascript描述

第一种方法:借助json对象来实现,若json对象中无该属性则添加,否则不添加,最后返回json对象的属性,时间复杂度为O(n) function deleteArrayRepeat(arr) { var result = {}; var temp = []; //将数组中各元素作为属性存到json对象中 for (var i = 0; i < arr.length; i++) { if (!result[arr[i]]) { result[arr[i]] = 0; temp.push(arr[

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

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

JS数组去重的三种方法

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