我试图对包含状态键的对象进行排序,该状态键具有" online","离线",#34;忙碌" ,所以只是想以一种所有" online"将出现在顶部,然后是"忙碌"然后"离线"
var arr = [{_id: "58e21249", name: "test2", status: "offline"},
{_id: "58e1249", name: "test3", status: "online"},
{_id: "58qwe49", name: "test21", status: "offline"},
{_id: "58ed49", name: "test212", status: "online"},
{_id: "58ee49", name: "test23", status: "offline"},
{_id: "58xe49", name: "test12", status: "online"},
{_id: "5849", name: "test2323", status: "busy"},
{_id: "58er49", name: "test2121", status: "busy"}];
arr.sort(function(first, second) {
if (second.status == "online") return 1;
});
console.log(arr);
这将仅返回我的状态:" online"在顶端。感谢
答案 0 :(得分:2)
试试这个:
var arr = [{_id: "58e21249", name: "test2", status: "offline"},
{_id: "58e1249", name: "test3", status: "online"},
{_id: "58qwe49", name: "test21", status: "offline"},
{_id: "58ed49", name: "test212", status: "online"},
{_id: "58ee49", name: "test23", status: "offline"},
{_id: "58xe49", name: "test12", status: "online"},
{_id: "5849", name: "test2323", status: "busy"},
{_id: "58er49", name: "test2121", status: "busy"}];
var statusOrder = ["online", "busy", "offline"];
arr = arr.sort(function(a, b) {
return statusOrder.indexOf(a.status) - statusOrder.indexOf(b.status);
});
console.log(arr);

甚至更短的ECMAScript6:
var arr = [{_id: "58e21249", name: "test2", status: "offline"},
{_id: "58e1249", name: "test3", status: "online"},
{_id: "58qwe49", name: "test21", status: "offline"},
{_id: "58ed49", name: "test212", status: "online"},
{_id: "58ee49", name: "test23", status: "offline"},
{_id: "58xe49", name: "test12", status: "online"},
{_id: "5849", name: "test2323", status: "busy"},
{_id: "58er49", name: "test2121", status: "busy"}];
var statusOrder = ["online", "busy", "offline"];
arr = arr.sort((a, b) => statusOrder.indexOf(a.status) - statusOrder.indexOf(b.status));
console.log(arr);

答案 1 :(得分:-1)
var statusOrder = ["online", "offline", "busy"];
arr.sort(function(first, second) {
return statusOrder.indexOf(first.status) < statusOrder.indexOf(second.status);
});