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
}