2017-04-05 77 views
0

JavaScript對象,這裏是我的數據集重新排序基於特定鍵值

var myData = [ 
    { 
    key: 'female', 
    value: 1000 
    }, 
    { 
    key: 'male', 
    value: 2000 
    }, 
    { 
    key: 'unknown', 
    value: 150 
    } 
]; 

我想從這些重新排序對象的女性 - >男性 - >未知「到「男 - >女性 - >未知」。

我最初的解決辦法是做像這樣:

var newAudienceArray = []; 

for (var x = 0; x < myData.length; x++){ 
    if (myData[x].key == 'male'){ 
    newAudienceArray.push(myData[x]); 
    } 
} 

for (var x = 0; x < myData.length; x++){ 
    if (myData[x].key == 'female'){ 
    newAudienceArray.push(myData[x]); 
    } 
} 

for (var x = 0; x < myData.length; x++){ 
    if (myData[x].key == 'unknown'){ 
    newAudienceArray.push(myData[x]); 
    } 
} 

這似乎非常詳細。有沒有更簡潔的解決方案?

回答

4

您可以使用Array.prototype.sort方法:

myData.sort(function (index, data) { 
    return data.key == 'male' ? 2 : data.key == 'female' ? 1 : 0 
}); 
3

您可以用key的值創建一個對象作爲鍵和位置,以使該元素在排序數組中具有值。然後,您可以使用sort()方法按該對象進行排序。

var myData = [{"key":"female","value":1000},{"key":"male","value":2000},{"key":"unknown","value":150}] 
 

 
var sortBy = { 
 
    male: 1, 
 
    female: 2, 
 
    unknown: 3 
 
} 
 

 
var result = myData.sort(function(a, b) { 
 
    return sortBy[a.key] - sortBy[b.key] 
 
}) 
 

 
console.log(result)