2017-03-04 19 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(...) 
相关问题