首页 > 编程语言 > 详细

数组去重

时间:2019-11-23 12:08:33      阅读:81      评论:0      收藏:0      [点我收藏+]

方法一:利用双层循环,外层循环元素,内层循环时比较值。如果有相同的值则跳过,不相同则push进数组

Array.prototype.distinct=function(){
        var arr=this,
            result=[],
            len=arr.length;
        for(var i=0;i<len;i++){
            for(var j=i+1;j<len;j++){
                if(arr[i]==arr[j]){
                    i=i+1;
                    j=i;
                }
            }
            result.push(arr[i]);
        }
    return result;
}

方法二:利用splice直接在原数组中进行操作:双层循环,外层循环元素,内层循环时比较值。值相同时,则删去这个值。注意:删除元素之后,需将元素的长度减1

技术分享图片
 1 Array.prototype.distinct=function(){
 2         var arr=this,
 3             len=arr.length;
 4         for(var i=0;i<len;i++){
 5             for(var j=i+1;j<len;j++){
 6                 if(arr[i]===arr[j]){
 7                     arr.splice(j,1);
 8                     j--;
 9                     len--;
10                 }
11             }
12         }
13         return arr;
14     }
View Code

方法三:利用indexOf和forEach

Array.prototype.distinct=function(){
        var arr=this,
            result=[],
            len=arr.length;
        arr.forEach(function(item,i,arr){
            // 从传入参数的下一个索引值开始寻找是否存在重复。
            if(arr.indexOf(item,i+1)===-1){
                result.push(item);
            }
        })
        return result;
    }

方法四:利用ES6的set结构

  

function distinct(arr){
        // return [...new Set(arr)]
        return Array.from(new Set(arr))
    }
    var data=[1,5,8,7,9,6,3,5,3,7,9,1];
    console.log(distinct(data));

 

数组去重

原文:https://www.cnblogs.com/wangjing-web/p/11915772.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!