zoukankan      html  css  js  c++  java
  • js深拷贝对象并根据key字母排序-摘要

    let data = {
        "params": {
          "id": 514,
            "storeCode": "5139",
            "channelKey": "XINXIANG",
            "channelOrderSn": "2513920051119292641272",
            "status": "CHECKING",
            "return_type": "FULL",
            "createdAt": "2020-05-13 13:58:47",
            "goodsList": [
                {
                    "spuCode": "660317",
                    "goodsName": "招牌拌面葱油味1袋",
                    "quantity": 1
                },
                {
                    "spuCode": "660313",
                    "goodsName": "招牌劲道风味拌面1盒",
                    "quantity": 1
                },
                {
                    "spuCode": "660321",
                    "goodsName": "招牌拌面椒麻味1袋",
                    "quantity": 1
                }
            ]
        },
        "serverKey": "oms",
        "format": "json",
        "sign": "{{sign}}",
        "timestamp": "{{timestamp}}",
        "version": "1.0"
    }
    // 检测数据类型
    function checkedType(data) {
        return Object.prototype.toString.call(data).slice(8, -1)
    }
    // 将对象排序
    function sortObj(obj) {
        if (checkedType(obj) === 'Object') {
            var keys = Object.keys(obj).sort();
            var arr = {};
            for (var i in keys) {
                var a = obj[keys[i]];
                arr[keys[i]] = obj[keys[i]];
            }
            return arr;
        } else {
            return obj;
        }
    }
    
    function cloneAndSort(data) {
        let result;
        let dataType = checkedType(data);
        if (dataType === 'Object') { // 对象
            result = {}
        } else if (dataType === 'Array') { // 数组
            result = []
        } else {
            return data;
        }
        
        for (let i in data) {
            if (checkedType(data[i]) === 'Object' || checkedType(data[i]) === 'Array') { //对象/数组里嵌套了对象/数组,递归
                result[i] = cloneAndSort(data[i]);
            } else { 
                result[i] = data[i];
            }
        }
        return sortObj(result);
    }
    
    console.log('排序key之后的结果', cloneAndSort(data));
    
  • 相关阅读:
    使用koa+mongodb构建的仿知乎接口(二)
    使用koa+mongodb构建的仿知乎接口(一)
    flask学习笔记
    后端遇到一些问题
    前端项目一些细节总结
    python基础学习
    vue本地运行项目使用iframe的跨域问题
    hover状态下改变图片颜色的方式 悬停图片切换;css变量;悬停svg图片改变颜色;VUE
    深拷贝
    git初使用
  • 原文地址:https://www.cnblogs.com/liliangel/p/12893243.html
Copyright © 2011-2022 走看看