zoukankan      html  css  js  c++  java
  • 原生和es6复杂数组去重的方法

    1、注意后面objArray和objArray1的输出.

    2、追加了ES6的一个封装方法Array.from(new Set(oArray)),经过测试效果一致。

    let oArray = [1,2,1,1,3,2,4,5,6,2,10];
        let user = {name:"xiaozhang"};
        let objArray=[1,2,3,2,3,user,user]
        let objArray1=[1,2,3,2,3,{name:"xiaoqiang"},{name:"xiaoqiang"}]
        function duplicate(origin){
            if(typeof origin != "object"){
                return origin;//如果不是引用类型就直接返回。
            }
            //调用对象原型链上面的tostring方法判断数据主体是对象还是数组
            let toString = Object.prototype.toString,
                obj_array = "[object Array]",
                target = (toString.call(origin) == obj_array ? [] : {});//判断当前源主体是对象还是数组并赋值
                     
            for(let prop in origin){
                if(target.indexOf(origin[prop]) == -1){
                    target.push(origin[prop]);
                }
            }
            return target;
        }
        console.log(duplicate(oArray))                    //[1, 2, 3, 4, 5, 6, 10]
        console.log(duplicate(objArray))            //[1,2,3,{name:"xiaozhang"}]
        console.log(duplicate(objArray1))            //[1,2,3,{name:"xiaoqiang"},{name:"xiaoqiang"}]
        console.log(Array.from(new Set(oArray)))     //[1, 2, 3, 4, 5, 6, 10]
        console.log(Array.from(new Set(objArray)))    //[1,2,3,{name:"xiaozhang"}]
        console.log(Array.from(new Set(objArray1)))    //[1,2,3,{name:"xiaoqiang"},{name:"xiaoqiang"}]
       
  • 相关阅读:
    java之数组使用以及拓展
    Java之数组介绍
    方法
    break&continue
    networkmanager is not running 网络管理没有运行
    CentOS-7修改IP
    操作系统
    计算机基础理论
    编码和解码
    pyQuery库
  • 原文地址:https://www.cnblogs.com/qinyulin/p/8523732.html
Copyright © 2011-2022 走看看