zoukankan      html  css  js  c++  java
  • 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
                }
  • 相关阅读:
    AC日记——[HNOI2008]GT考试 bzoj 1009
    AC日记——[SCOI2009]游戏 bzoj 1025
    AC日记——[HNOI2010]BOUNCE 弹飞绵羊 洛谷 P3203
    AC日记——旅游 bzoj 2157
    NOIP模拟2017.6.11解题报告
    AC日记——【模板】Link Cut Tree 洛谷 P3690
    AC日记——[SDOI2010]大陆争霸 洛谷 P3690
    [NOI2010]超级钢琴 倍增
    [HNOI2004]L语言 字典树 记忆化搜索
    对拍
  • 原文地址:https://www.cnblogs.com/liAnran/p/11660564.html
Copyright © 2011-2022 走看看