JavaScript-如何按在线人员对数组中的对象进行排序,然后按其权限排序,然后按名称的字母顺序排序?
嘿,我正在尝试为JSON中的朋友呈现restapi。我已经在一个数组中找到了来自数据库的朋友,但我需要对他们进行排序,以获得更好的感觉。例如,数组如下所示:JavaScript-如何按在线人员对数组中的对象进行排序,然后按其权限排序,然后按名称的字母顺序排序?,javascript,Javascript,嘿,我正在尝试为JSON中的朋友呈现restapi。我已经在一个数组中找到了来自数据库的朋友,但我需要对他们进行排序,以获得更好的感觉。例如,数组如下所示: const friends = [ { "id": 1, "name": "Hellbyte", "rank": "founder", "online": true }, { "id": 3, "name": "Tess", "rank": "user", "onl
const friends = [
{
"id": 1,
"name": "Hellbyte",
"rank": "founder",
"online": true
},
{
"id": 3,
"name": "Tess",
"rank": "user",
"online": false
},
{
"id": 9,
"name": "Katey",
"rank": "admin",
"online": true
},
{
"id": 5,
"name": "John",
"rank": "globalmoderator",
"online": false
},
{
"id": 10,
"name": "Andre",
"rank": "admin",
"online": true
},
{
"id": 19,
"name": "Xyz",
"rank": "user",
"online": true
},
{
"id": 17,
"name": "Nate",
"rank": "premium",
"online": false
},
{
"id": 25,
"name": "Berry",
"rank": "premium",
"online": false
}
]
const friends = [
{
"id": 1,
"name": "Hellbyte",
"rank": "founder",
"online": true
},
{
"id": 10,
"name": "Andre",
"rank": "admin",
"online": true
},
{
"id": 9,
"name": "Katey",
"rank": "admin",
"online": true
},
{
"id": 19,
"name": "Xyz",
"rank": "user",
"online": true
},
{
"id": 5,
"name": "John",
"rank": "globalmoderator",
"online": false
},
{
"id": 25,
"name": "Berry",
"rank": "premium",
"online": false
},
{
"id": 17,
"name": "Nate",
"rank": "premium",
"online": false
},
{
"id": 3,
"name": "Tess",
"rank": "user",
"online": false
}
]
我需要根据这些条件对它们进行排序:
- 在线是真的
- 排名顺序如下:创始人、管理员、globalmoderator、高级用户、用户
- 按姓名字母顺序
- 在线是假的
- 排名顺序如下:创始人、管理员、globalmoderator、高级用户、用户
- 按姓名字母顺序
const friends = [
{
"id": 1,
"name": "Hellbyte",
"rank": "founder",
"online": true
},
{
"id": 3,
"name": "Tess",
"rank": "user",
"online": false
},
{
"id": 9,
"name": "Katey",
"rank": "admin",
"online": true
},
{
"id": 5,
"name": "John",
"rank": "globalmoderator",
"online": false
},
{
"id": 10,
"name": "Andre",
"rank": "admin",
"online": true
},
{
"id": 19,
"name": "Xyz",
"rank": "user",
"online": true
},
{
"id": 17,
"name": "Nate",
"rank": "premium",
"online": false
},
{
"id": 25,
"name": "Berry",
"rank": "premium",
"online": false
}
]
const friends = [
{
"id": 1,
"name": "Hellbyte",
"rank": "founder",
"online": true
},
{
"id": 10,
"name": "Andre",
"rank": "admin",
"online": true
},
{
"id": 9,
"name": "Katey",
"rank": "admin",
"online": true
},
{
"id": 19,
"name": "Xyz",
"rank": "user",
"online": true
},
{
"id": 5,
"name": "John",
"rank": "globalmoderator",
"online": false
},
{
"id": 25,
"name": "Berry",
"rank": "premium",
"online": false
},
{
"id": 17,
"name": "Nate",
"rank": "premium",
"online": false
},
{
"id": 3,
"name": "Tess",
"rank": "user",
"online": false
}
]
我怎么能这样分类呢?请让我知道怎么做。谢谢。您可以使用数组#排序
并传递自定义比较器,根据联机
状态比较朋友
,然后是排名
顺序,最后是按名称
进行词典排序
const friends=[{“id”:1,“name”:“Hellbyte”,“rank”:“founder”,“online”:true},{“id”:3,“name”:“Tess”,“rank”:“user”,“online”:false},{“id”:9,“name”:“Katey”,“rank”:“admin”,“online”:true},{“id”:5,“name”:“John”,“rank”:“globalmoderator”,“online”:false},{“id”:10,“name”:“ander”,“rank”:“admin”,“online”:true},{“id”:19,“name”:“Xyz”,“rank”:“user”,“online”:true},{“id”:17,“name”:“Nate”,“rank”:“premium”,“online”:false},{“id”:25,“name”:“Berry”,“rank”:“premium”,“online”:false},
排名=[“创始人”、“管理员”、“globalmoderator”、“高级”、“用户”];
排序((a,b)=>b.online-a.online | | ranks.indexOf(a.rank)-ranks.indexOf(b.rank)| | a.name.localeCompare(b.name));
console.log(朋友)
您可以获取各种联机状态的对象,并按顺序排列,首先按联机
,然后按排序
,最后按名称
排序
这种方法允许对列组进行不同的排序顺序,独立于联机状态
var rank={true:{founder:1,admin:2,globalmoderator:3,premium:4,user:5},false:{founder:1,admin:2,globalmoderator:3,premium:4,user:5},
数据=[{id:1,名称:“Hellbyte”,排名:“创始人”,在线:真},{id:3,名称:“苔丝”,排名:“用户”,在线:假},{id:9,名称:“凯蒂”,排名:“管理员”,在线:真},{id:5,名称:“约翰”,排名:“全球模仿者”,在线:假},{id:10,名称:“安德烈”,排名:“管理员”,在线:真},{id:19,名称:“Xyz”,排名:“用户”,在线:真},{id:17,姓名:“Nate”,排名:“premium”,在线:false},{id:25,姓名:“Berry”,排名:“premium”,在线:false}];
数据排序((a,b)=>
b、 在线||
排名[a.online][a.rank]-排名[b.online][b.rank]||
a、 name.localeCompare(b.name)
);
console.log(数据)
。作为控制台包装{max height:100%!important;top:0;}
请共享您尝试过的代码。我没有任何代码,我不知道如何编写好排序函数来完成我需要的工作。