代码之家  ›  专栏  ›  技术社区  ›  Saddy

基于数组中字符串值的索引对对象数组进行排序

  •  0
  • Saddy  · 技术社区  · 8 年前

    我试图按字符串对数据集进行排序 rank 基于它们在阵列中的位置我试着用indexOf进行排序,但收效甚微我确实发现了另一个类似的帖子,尽管它与我的问题无关,因为我的问题是任何快速复制的记者。

    数据集:

    [
        {
        "_id": {
            "$oid": "5b535f6eddfad00564b103db"
        },
        "notes": [
            "Very attractive"
        ],
        "warns": [],
        "username": "Saddy",
        "avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/3c/3ce7fd0c1a5225790d67d90d4f1e60d2d29d2037_full.jpg",
        "id": "76561198151478478",
        "dateHired": {
            "$date": "2018-07-21T16:29:34.563Z"
        },
        "profile": "https://steamcommunity.com/id/dpitt/",
        "enactedBans": 0,
        "currentTickets": 0,
        "totalTickets": 0,
        "rank": "Administrator",
        "__v": 0
    },
    {
        "_id": {
            "$oid": "5b54d085ed4855275f4cea63"
        },
        "notes": [],
        "warns": [],
        "username": "meme master nick",
        "avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/f6/f61f5d62b79b22c9183c049521a4c587ab9334cd_full.jpg",
        "id": "76561198353773365",
        "dateHired": {
            "$date": "2018-07-22T18:44:21.814Z"
        },
        "profile": "https://steamcommunity.com/profiles/76561198353773365/",
        "enactedBans": 0,
        "currentTickets": 0,
        "totalTickets": 0,
        "rank": "Owner",
        "__v": 0
    },
    {
        "_id": {
            "$oid": "5b567169e7179a32d9cc2abe"
        },
        "notes": [],
        "warns": [],
        "username": "DarkGamer2k16",
        "avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/3d/3dd1f81fc4556ae984ebe2312e1b9fc4ba54b5ea_full.jpg",
        "id": "76561194018842253",
        "dateHired": {
            "$date": "2018-07-21T16:29:34.563Z"
        },
        "profile": "https://steamcommunity.com/id/DarkGamer2k16/",
        "enactedBans": 0,
        "currentTickets": 0,
        "totalTickets": 0,
        "rank": "Moderator",
        "__v": 0
    }
    ]
    

    失败的尝试:

    console.log(arr.sort(function(a){ 
        return ["Owner", "Administrator", "Moderator"].indexOf(a.rank)
    }))
    
    
    arr.sort(function(a,b){ 
    let sort = Object.assign({}, a, b);
        return["Owner", "Administrator", "Moderator"].indexOf(sort.rank)
    })
    

    以上两个都只是用我的数据替换了所有的数据谢谢你的帮助

    预期产量:

    [
    {
        "_id": {
            "$oid": "5b54d085ed4855275f4cea63"
        },
        "notes": [],
        "warns": [],
        "username": "meme master nick",
        "avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/f6/f61f5d62b79b22c9183c049521a4c587ab9334cd_full.jpg",
        "id": "76561198353773365",
        "dateHired": {
            "$date": "2018-07-22T18:44:21.814Z"
        },
        "profile": "https://steamcommunity.com/profiles/76561198353773365/",
        "enactedBans": 0,
        "currentTickets": 0,
        "totalTickets": 0,
        "rank": "Owner",
        "__v": 0
    },
        {
        "_id": {
            "$oid": "5b535f6eddfad00564b103db"
        },
        "notes": [
            "Very attractive"
        ],
        "warns": [],
        "username": "Saddy",
        "avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/3c/3ce7fd0c1a5225790d67d90d4f1e60d2d29d2037_full.jpg",
        "id": "76561198151478478",
        "dateHired": {
            "$date": "2018-07-21T16:29:34.563Z"
        },
        "profile": "https://steamcommunity.com/id/dpitt/",
        "enactedBans": 0,
        "currentTickets": 0,
        "totalTickets": 0,
        "rank": "Administrator",
        "__v": 0
    },
    {
        "_id": {
            "$oid": "5b567169e7179a32d9cc2abe"
        },
        "notes": [],
        "warns": [],
        "username": "DarkGamer2k16",
        "avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/3d/3dd1f81fc4556ae984ebe2312e1b9fc4ba54b5ea_full.jpg",
        "id": "76561194018842253",
        "dateHired": {
            "$date": "2018-07-21T16:29:34.563Z"
        },
        "profile": "https://steamcommunity.com/id/DarkGamer2k16/",
        "enactedBans": 0,
        "currentTickets": 0,
        "totalTickets": 0,
        "rank": "Moderator",
        "__v": 0
    }
    ]
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   CertainPerformance    8 年前

    你两个都要用 a b 在提供给的参数中 sort -比较它们在 ["Owner", "Administrator", "Moderator"] 阵列。

    const input=[{"_id":{"$oid":"5b535f6eddfad00564b103db"},"notes":["Very attractive"],"warns":[],"username":"Saddy","avatar":"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/3c/3ce7fd0c1a5225790d67d90d4f1e60d2d29d2037_full.jpg","id":"76561198151478478","dateHired":{"$date":"2018-07-21T16:29:34.563Z"},"profile":"https://steamcommunity.com/id/dpitt/","enactedBans":0,"currentTickets":0,"totalTickets":0,"rank":"Administrator","__v":0},{"_id":{"$oid":"5b54d085ed4855275f4cea63"},"notes":[],"warns":[],"username":"meme master nick","avatar":"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/f6/f61f5d62b79b22c9183c049521a4c587ab9334cd_full.jpg","id":"76561198353773365","dateHired":{"$date":"2018-07-22T18:44:21.814Z"},"profile":"https://steamcommunity.com/profiles/76561198353773365/","enactedBans":0,"currentTickets":0,"totalTickets":0,"rank":"Owner","__v":0},{"_id":{"$oid":"5b567169e7179a32d9cc2abe"},"notes":[],"warns":[],"username":"DarkGamer2k16","avatar":"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/3d/3dd1f81fc4556ae984ebe2312e1b9fc4ba54b5ea_full.jpg","id":"76561194018842253","dateHired":{"$date":"2018-07-21T16:29:34.563Z"},"profile":"https://steamcommunity.com/id/DarkGamer2k16/","enactedBans":0,"currentTickets":0,"totalTickets":0,"rank":"Moderator","__v":0}]
    
    const ranks = ["Owner", "Administrator", "Moderator"];
    input.sort((a, b) => ranks.indexOf(a.rank) - ranks.indexOf(b.rank));
    console.log(input);