Array集结号

实现数组去重的几种方法

数组去重一

Array.prototype.unique2 = function(){
 this.sort(); //先排序
 var res = [this[0]];
 for(var i = 1; i < this.length; i++){
  if(this[i] !== res[res.length - 1]){
   res.push(this[i]);
  }
 }
 return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
console.log(arr.unique2());

数组去重二

利用数组indexof+push实现数组去重

var ary = [1,2,2,2,2,3,3,5,5,55,6,6];
function delArr(array){
    var newArr=[];//新建一个新数组
    //遍历参数数组array
    for(var i=0;i<array.length;i++){
        //判断新数组是否有这个元素值,没有的话,就把arr[i]给push到新数组newArr中
        if(newArr.indexOf(array[i])===-1){
            newArr.push(array[i]);
        }
    }
    return newArr;
}
console.log(delArr(ary));

数组去重三

利用对象键值对法:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组

var arr = [1,2,2,2,2,3,3,5,5,55,6,6];
function delArr2(array){
                var json={},newArr=[],val,type;
                for(var i=0;i<array.length;i++){
                    val=array[i];
                    //判断val是什么数据类型
                    type=typeof val;
                    // console.log("判断类型"+[type]);
                    //判断值是否为js对象的键,不是的话给对象新增该键并放入新数组
                    if(!json[val]){
                        json[val]=[type];
                        newArr.push(val);
                    }
                    else if(json[val].indexOf(type)<0){
                        json[val].push(type);
                        newArr.push(val);
                    }
                }
                return newArr;
            }
            console.log(delArr2(arr));

【ES6】 数组去重(1)

var arr = [1,2,2,2,2,3,3,5,5,55,6,6];
function unique(ary) {
        return [...new Set(ary)];
    }
console.log(unique(arr));

【ES6】数组去重(2)

var arr = [1,2,2,2,2,3,3,5,5,55,6,6];
var newArr=Array.from(new Set(arr))
console.log(newArr);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文为阮一峰大神的《ECMAScript 6 入门》的个人版提纯! babel babel负责将JS高级语法转义,...
    Devildi已被占用阅读 2,027评论 0 4
  • 一、ES6简介 ​ 历时将近6年的时间来制定的新 ECMAScript 标准 ECMAScript 6(亦称 ...
    一岁一枯荣_阅读 6,125评论 8 25
  • 下面是水平和垂直居中的方法: 1.Flex 方案 2.Grid 方案 3.absolute + transform...
    李奕锦liyijin阅读 577评论 0 2
  • 文/君墨 雪落城池半壁山, 夜撒荒原群兽拦。 宏伟华夏英才多, 人杰地灵助雄风。
    Fa君墨阅读 261评论 0 2
  • 桃子离开了相处了5年的男朋友,他们都觉得桃子疯了,因为大家都觉得王先生对她很好。 因为他们从来不吵架 王先生从来不...
    牛怒阅读 329评论 0 0