我的研究中没有找到任何东西所以我认为有人可以帮助我。
我的问题是我想要对包含状态的对象数组进行排序:
{
"data":[
{
"status":"NEW"
},
{
"status":"PREP"
},
{
"status":"CLOS"
},
{
"status":"END"
},
{
"status":"ERR"
},
{
"status":"PAUS"
}
]
}
现在我想设置一个固定的排序顺序,就像所有状态为“END”的对象首先出现,然后是状态为“PREP”的所有对象,依此类推。
有没有办法在JavaScript中执行此操作?
提前致谢:)
答案 0 :(得分:3)
这是一个使用标准.sort()
回调的非常简单的比较操作:
var preferredOrder = ['END', 'ERR', ..];
myArray.sort(function (a, b) {
return preferredOrder.indexOf(a.status) - preferredOrder.indexOf(b.status);
});
答案 1 :(得分:2)
您可以将对象与其订单值一起使用,然后对其进行排序。
var obj = { "data": [{ "status": "NEW" }, { "status": "PREP" }, { "status": "CLOS" }, { "status": "END" }, { "status": "ERR" }, { "status": "PAUS" }] };
obj.data.sort(function (a, b) {
var ORDER = { END: 1, PREP: 2, PAUS: 3, CLOS: 4, ERR: 5, NEW: 6 };
return (ORDER[a.status] || 0) - (ORDER[b.status] || 0);
});
document.write('<pre>' + JSON.stringify(obj, 0, 4) + '</pre>');
&#13;