我有一个数组,我想根据我对象上的值进行排序。
我的数组看起来像这样:
[
{
"name": "Ricard Blidstrand",
"number": "5",
"position": "b"
},
{
"name": "Gustaf Thorell",
"number": "12",
"position": "fw"
},
{
"name": "Rasmus Bengtsson",
"number": "13",
"position": "mv"
}
]
我想按此顺序按位置键订购:
mv> b> FW
我是否需要写出来,或者我错了?
if(a === "b" && b === "b") {
return 0;
} else if (a === "b" && b === "mv") {
return 1;
}
答案 0 :(得分:4)
您需要先指定优先级数组。
var priority = [ "mv", "b", "fw"];
现在基于此对数组进行排序
arr.sort( ( a, b ) => priority.indexOf( a.position ) - priority.indexOf( b.position ) );
<强>演示强>
var arr = [{
"name": "Ricard Blidstrand",
"number": "5",
"position": "b"
},
{
"name": "Gustaf Thorell",
"number": "12",
"position": "fw"
},
{
"name": "Rasmus Bengtsson",
"number": "13",
"position": "mv"
}
];
var priority = [ "mv", "b", "fw"];
arr.sort( ( a, b ) => priority.indexOf( a.position ) - priority.indexOf( b.position ) );
console.log(arr);
&#13;
答案 1 :(得分:2)
创建订单对象,并为每个位置指定一个值。通过对象的位置从对象获取订单值进行排序:
var arr = [{"name":"Ricard Blidstrand","number":"5","position":"b"},{"name":"Gustaf Thorell","number":"12","position":"fw"},{"name":"Rasmus Bengtsson","number":"13","position":"mv"}]
var order = { mv: 0, b: 1, fw: 2 }
arr.sort(function(a, b) {
return order[a.position] - order[b.position]
})
console.log(arr)
&#13;