javascript - 按“下一个”和“上一个”属性排序(JS 比较器功能)
问题描述
我有这样的示例数组:
let arr = [
{ id: "1325asdfasdasd", next: "5345341fgdfgdd", previous: "545234123fsdfd" },
{ id: "das987as9dya8s", next: "3j12k3b1231jkj" },
{ id: "89ad8sasds9d8s", previous: "1j3b12k3jbasdd" },
{ id: "5345341fgdfgdd", next: "1j3b12k3jbasdd", previous: "1325asdfasdasd" },
{ id: "1423123123asfd", next: "545234123fsdfd", previous: "3j12k3b1231jkj" },
{ id: "1j3b12k3jbasdd", next: "89ad8sasds9d8s", previous: "5345341fgdfgdd" },
{ id: "3j12k3b1231jkj", next: "1423123123asfd", previous: "das987as9dya8s" },
{ id: "545234123fsdfd", next: "1325asdfasdasd", previous: "1423123123asfd" },
]
我正在尝试按“下一个”和“上一个”属性对数组进行排序,期望结果如下:
let arr = [
{ id: "das987as9dya8s", next: "3j12k3b1231jkj" },
{ id: "3j12k3b1231jkj", next: "1423123123asfd", previous: "das987as9dya8s" },
{ id: "1423123123asfd", next: "545234123fsdfd", previous: "3j12k3b1231jkj" },
{ id: "545234123fsdfd", next: "1325asdfasdasd", previous: "1423123123asfd" },
{ id: "1325asdfasdasd", next: "5345341fgdfgdd", previous: "545234123fsdfd" },
{ id: "5345341fgdfgdd", next: "1j3b12k3jbasdd", previous: "1325asdfasdasd" },
{ id: "1j3b12k3jbasdd", next: "89ad8sasds9d8s", previous: "5345341fgdfgdd" },
{ id: "89ad8sasds9d8s", previous: "1j3b12k3jbasdd" },
]
有比较器功能吗?到目前为止,我已经尝试过:
arr.sort((a, b) => {
if (a.id === b.previous) {
return -1;
}
if (a.id === b.next) {
return 1;
}
});
但它没有按预期工作。
解决方案
推荐阅读
- php - 显示来自具有一个公共点的两个数组的数据
- ios - 您如何正确实现异步搜索结果?
- reactjs - React native:React State 不断调用另一个 Component 中的 API
- servicestack - ServiceStack 中的后台服务
- mongodb - 在 $lookup 中仅查找子集合中的特定键
- javascript - 异步函数像同步一样工作
- ibm-cloud - 如何使用 DB2(或其他)作为 Watson IoT Platform 的历史数据存储?
- c# - 出现此错误:无法将“System.DateTime”类型的对象转换为“Oracle.ManagedDataAccess.Client.OracleParameter”类型
- http - 如何在 actix-web 服务器中共享 reqwest 客户端?
- go - 解析类型dns.RR