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
            }
原文地址:https://www.cnblogs.com/liAnran/p/11660564.html