我有一个JSON对象,其中包含一个团队列表,每个团队都有一个teamCrimeCategorySum
,它是一个键值对的对象,其中每个键都是一个犯罪类别,每个值都是犯罪的总数。那个类别。它按字母顺序排列,看起来像这样......
alcohol:0
animal abuse:0
animal cruelty:0
animal neglect:0
assault:7
attempted murder:0
battery:1
我正在循环,以获得像这样的值的数组......
teamList.map(team => {
const newArray = Object.keys(team['teamCrimeCategorySum']).map(key => {
return team['teamCrimeCategorySum'][key]
})
})
这将生成一个原始订单丢失的数组。上面的目的是产生这个......
[18, 6, 1, 1, 7, 2, 3, ...]
我想保留订单,以便上面的对象应该生成......
[0, 0, 0, 0, 7, 0, 1, ...]
答案 0 :(得分:1)
您可以使用以下代码生成一个保留对象
原始顺序的数组 const newArray = [];
for ( let key in tempList) {
if(tempList.hasOwnProperty(key)) {
newArray.push(tempList[key]);
}
}
或者如果你想使用Object.keys和Array.map,首先对键进行排序,然后像下面那样调用map
Object.keys(tempList).sort().map(...)
答案 1 :(得分:0)
@rlemon有正确的想法。当我在控制台中检查对象时,它按字母顺序记录,但对象属性未按字母顺序存储。通过调用.sort()
,在.map()
之前,我能够建立并保留我原定的字母顺序。该功能现在看起来像这样......
teamList.map(team => {
const newArray = Object.keys(team['teamCrimeCategorySum'])
.sort()
.map(key => {
return team['teamCrimeCategorySum'][key]
})
return [`${team.name}`, ...newArray, '']
})