基于特定键值对javascript对象重新排序

基于特定键值对javascript对象重新排序,javascript,json,object,refactoring,Javascript,Json,Object,Refactoring,这是我的数据集 var myData = [ { key: 'female', value: 1000 }, { key: 'male', value: 2000 }, { key: 'unknown', value: 150 } ]; 我想将这些对象从“女性-->男性-->未知”重新排序为“男性-->女性-->未知” 我最初的解决方案是这样做: var newAudienceArray = []; for (va

这是我的数据集

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]);
  }
}
var newAudienceArray=[];
对于(var x=0;x

这似乎非常冗长。有更简洁的解决方案吗?

您可以创建一个对象,将
键的值作为键,并将该元素在排序数组中的位置作为值。然后可以使用
sort()
方法按该对象排序

var myData=[{“key”:“female”,“value”:1000},{“key”:“male”,“value”:2000},{“key”:“unknown”,“value”:150}]
var sortBy={
男:1,,
女:2,,
未知:3
}
var result=myData.sort(函数(a,b){
按[a.key]排序返回-按[b.key]排序
})

console.log(结果)
您可以使用Array.prototype.sort方法:

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