![](/img/trans.png)
[英]nested array object comparison with another array of elements and create new array using Javascript or ES6
[英]Javascript ES6 - mapping over object to produce a new array loses order of elements in object
我有一個包含團隊列表的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, ...]
您可以使用以下代碼生成一個數組,該數組保留對象的原始順序
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(...)
@rlemon有正確的想法。 當我在控制台中檢查對象時,它是按字母順序記錄的,但是對象屬性不是按字母順序存儲的。 通過在.map()
之前調用.sort()
,我可以建立然后保留我想要的字母順序。 該功能現在看起來像這樣...
teamList.map(team => {
const newArray = Object.keys(team['teamCrimeCategorySum'])
.sort()
.map(key => {
return team['teamCrimeCategorySum'][key]
})
return [`${team.name}`, ...newArray, '']
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.