首页 > 解决方案 > 按“下一个”和“上一个”属性排序(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;
    }
});

但它没有按预期工作。

标签: javascriptsortingcomparator

解决方案


推荐阅读