这是我的数据集
var myData = [
{
key: 'female',
value: 1000
},
{
key: 'male',
value: 2000
},
{
key: 'unknown',
value: 150
}
];
我想从'女性重新排序这些对象 - >男性 - >未知'到男性 - >女性 - >未知&#39 ;.
我原来的解决方案是这样做的:
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]);
}
}
这看起来非常冗长。有更简洁的解决方案吗?
答案 0 :(得分:4)
您可以使用Array.prototype.sort方法:
myData.sort(function (index, data) {
return data.key == 'male' ? 2 : data.key == 'female' ? 1 : 0
});
答案 1 :(得分: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)
&#13;