• object.keys()


    Object.keys()方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 。如果对象的键-值都不可枚举,那么将返回由键组成的数组。

    例子:

    // simple array
    var arr = ['a', 'b', 'c'];
    console.log(Object.keys(arr)); // console: ['0', '1', '2']
    
    // array like object
    var obj = { 0: 'a', 1: 'b', 2: 'c' };
    console.log(Object.keys(obj)); // console: ['0', '1', '2']
    
    // array like object with random key ordering
    var anObj = { 100: 'a', 2: 'b', 7: 'c' };
    console.log(Object.keys(anObj)); // console: ['2', '7', '100']
    
    // getFoo is a property which isn't enumerable
    var myObj = Object.create({}, {
      getFoo: {
        value: function () { return this.foo; }
      } 
    });
    myObj.foo = 1;
    console.log(Object.keys(myObj)); // console: ['foo']

    应用:

    nationWideStatistics :原本数据的样子
    期望:
     //数据变成
     //上海市[0,0,0,0,0]
     //云南省[0,0,0,0,0]
     //内蒙古自治区[0,0,0,0,0]
    
    var nationWideStatistics = [{
                        aggregate: 0,
                        date: "2019-09-26",
                        separateList: [{
                            上海市: 1
                        }, {
                            云南省: 0
                        }, {
                            内蒙古自治区: 0
                        }
                        ]
                    },
                    {
                        aggregate: 50,
                        date: "2019-09-27",
                        separateList: [{
                            上海市: 2
                        }, {
                            云南省: 0
                        }, {
                            内蒙古自治区: 0
                        }
                        ]
                    },
                    {
                        aggregate: 5,
                        date: "2019-09-28",
                        separateList: [{
                            上海市: 3
                        }, {
                            云南省: 0
                        }, {
                            内蒙古自治区: 0
                        }
                        ]
                    },
                    {
                        aggregate: 40,
                        date: "2019-09-29",
                        separateList: [{
                            上海市: 4
                        }, {
                            云南省: 0
                        }, {
                            内蒙古自治区: 0
                        }
                        ]
                    },
                    {
                        aggregate: 80,
                        date: "2019-09-30",
                        separateList: [{
                            上海市: 5
                        }, {
                            云南省: 0
                        }, {
                            内蒙古自治区: 0
                        }
                        ]
                    }
                ]
                //数据变成
                //上海市[0,0,0,0,0]
                //云南省[0,0,0,0,0]
                //内蒙古自治区[0,0,0,0,0]
                //……
                console.log(getData(nationWideStatistics))

    实现函数代码:

     function getData(data){
                    let list = {}
                    data.forEach(val=>{
                        val.separateList.forEach(item=>{
                            let key = Object.keys(item)[0]
                            if(!list[key]){
                                list[key] = [item[key]]
                            } else {
                                list[key].push(item[key])
                            }
                        })
                    })
                    return list
                }
  • 相关阅读:
    Java 自定义注解结合 Aop 切面和本地缓存实现接口防重复请求提交
    SpringBoot与SpringCloud的关系与区别
    【超详细全过程】JavaEE 开发环境安装全过程(jdk+tomcat+eclipse)
    Sentinel 限流降级,Sentinel持久化
    JAVA 调用泛型参数的静态方法
    搜索常见问题
    Leetcode 101. 对称二叉树 简单
    PaddlePaddle inference 源码分析(五)graph和pass
    现代C++之理解auto类型推断(转)
    c++11 新特性 (转)
  • 原文地址:https://www.cnblogs.com/liAnran/p/11660564.html
Copyright © 2020-2023  润新知