2017-03-04 36 views
0

我有一個包含團隊列表的JSON對象,每隊有一個teamCrimeCategorySum這是鍵值對的對象,其中每個關鍵是犯罪類別,每個值是該類別的犯罪總數。它是按字母順序排列,看起來像這樣...的Javascript ES6 - 在對象以產生一個新的數組映射失去了元素的順序對象

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, ...] 
+3

對象屬性沒有訂單。你可以叫'Object.keys(O)的.sort(FN).map' – rlemon

+0

就解決了!謝謝!我不知道有當我把它記錄到控制檯,它是按字母順序顯示沒有秩序。 –

回答

0

@rlemon有正確的想法。當我檢查在控制檯中的對象,它被記錄在按字母順序排列,但對象屬性未存儲在字母順序排列。通過調用.sort().map()之前,我是能夠建立,然後留住我本來打算字母順序排列。該函數現在看起來是這樣的......

teamList.map(team => { 
    const newArray = Object.keys(team['teamCrimeCategorySum']) 
     .sort() 
     .map(key => { 
     return team['teamCrimeCategorySum'][key] 
     }) 
    return [`${team.name}`, ...newArray, ''] 
    }) 
1

您可以使用下面的代碼來生成一個數組對象從保留原有順序

const newArray = []; 
    for (let key in tempList) { 
     if(tempList.hasOwnProperty(key)) { 
       newArray.push(tempList[key]); 
     } 
    } 

或者還是,如果你想使用Object.keys和陣列.map,首先按鍵排序,然後調用如下圖

Object.keys(tempList).sort().map(...) 
相關問題