基于特定键值对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
});