【问题标题】:Sorting API JSON response using Javascript使用 Javascript 对 API JSON 响应进行排序
【发布时间】:2020-05-22 21:02:47
【问题描述】:

我在点击 DoctorData.api 时得到以下响应,并想用他们的“ID”对它们进行排序。有人可以告诉我如何对输出 JSON 数据进行排序并以相同的格式显示它。 请原谅我的编码技能,这是我的第二个测试用例。我是 JS 新手。

    var doctorIDgeturl = geturl.geturls.getapiUrl; //'getapiUrl' is Doctor Get API
    var res = await api.getRequest(doctorIDgeturl);
    logger.logger().info('GET_data = ', JSON.stringify(res.data, null, 2));
    var rescount = Object.keys(res.data.data.doctorList); //doctorList is the API response object for above GET API
  
    console.log("This is Sorted Id: ");
    const sortedResponse = sort(res.data, r => r.doctorListModels.associateId, ['asc']) //using ascending order to sort
    console.log(sortedResponse);

当前输出:

{
    "message": "Record Found",
    "data": {
        "DoctorsList": [
        {
            "id": "10",
            "name": "William",
            "launch_date": "2018-01-24T00:00:00.000-05:00"
        },
        {
            "id": "2",
            "name": "Snow",
            "launch_date": "2017-08-14T00:00:00.000-05:00"
        },
        {
            "id": "33",
            "name": "Thomas",
            "launch_date": "2018-11-29T00:00:00.000-05:00"
        },
        {
            "id": "3",
            "name": "Ismail",
            "launch_date": "2018-11-29T00:00:00.000-05:00"
        },
        {
            "id": "5",
            "name": "Jackson",
            "launch_date": "2018-04-10T00:00:00.000-05:00"
        }

排序后的预期输出:

{
    "message": "Record Found",
    "data": {
        "DoctorsList": [

   {
        "id": "2",
        "name": "Snow",
        "launch_date": "2017-08-14T00:00:00.000-05:00"
    },
    {
        "id": "3",
        "name": "Ismail",
        "launch_date": "2018-11-29T00:00:00.000-05:00"
    },
    {
        "id": "5",
        "name": "Jackson",
        "launch_date": "2018-04-10T00:00:00.000-05:00"
    },
    {
        "id": "10",
        "name": "William",
        "launch_date": "2018-01-24T00:00:00.000-05:00"
    },
    {
        "id": "33",
        "name": "Thomas",
        "launch_date": "2018-11-29T00:00:00.000-05:00"
    }

【问题讨论】:

标签: javascript json reactjs api sorting


【解决方案1】:

parseInt(r.doctorListModels.associateId)+r.doctorListModels.associateId

它似乎将 id 排序为字符串而不是数字

【讨论】:

    【解决方案2】:

    抱歉,由于声誉低,我无法发表评论,但这里有解决方案。

    const obj = {
      "message": "Record Found",
      "data": {
        "DoctorsList": [{
          "id": "10",
          "name": "William",
          "launch_date": "2018-01-24T00:00:00.000-05:00"
        },
        {
          "id": "2",
          "name": "Snow",
          "launch_date": "2017-08-14T00:00:00.000-05:00"
        },
        {
          "id": "33",
          "name": "Thomas",
          "launch_date": "2018-11-29T00:00:00.000-05:00"
        },
        {
          "id": "3",
          "name": "Ismail",
          "launch_date": "2018-11-29T00:00:00.000-05:00"
        },
        {
          "id": "5",
          "name": "Jackson",
          "launch_date": "2018-04-10T00:00:00.000-05:00"
        }]
      }
    }
    
    
    const sortedResponse = obj.data.DoctorsList.sort(function(a, b) { return parseInt(a.id) - parseInt(b.id) });
    console.log(sortedResponse)

    【讨论】:

      【解决方案3】:

      const obj = {
          "message": "Record Found",
          "data": {
              "DoctorsList": [{
          "id": "10",
          "name": "William",
          "launch_date": "2018-01-24T00:00:00.000-05:00"
        },
        {
          "id": "2",
          "name": "Snow",
          "launch_date": "2017-08-14T00:00:00.000-05:00"
        },
        {
          "id": "33",
          "name": "Thomas",
          "launch_date": "2018-11-29T00:00:00.000-05:00"
        },
        {
          "id": "3",
          "name": "Ismail",
          "launch_date": "2018-11-29T00:00:00.000-05:00"
        },
        {
          "id": "5",
          "name": "Jackson",
          "launch_date": "2018-04-10T00:00:00.000-05:00"
        }
      ]
      }}
      
      
      obj.data.DoctorsList = obj.data.DoctorsList.sort((a, b) => parseInt(a.id) > parseInt(b.id));
      console.log(obj)

      【讨论】:

      • 你在回答之前检查过你的输出吗?它从问题中产生准确的 incorrect 输出..
      • 不,它没有。再次检查。
      • 这是我的输出:pastebin.com/7qkzeDE3 所以它是有序的。我在这里没有看到错误
      • 抱歉,如果我错过了代码先生,由于我当前的代码不完整,我正在努力在这种紧张的情况下使其正确,我们正在帮助医生充分利用他们的详细信息,所以没有人会因工作,为了实现它,我们要求客户使其自动化并获取 ID。所以我想在这里询问我可以使用哪个排序函数来生成 json 输出。
      • @zirmax 但这不是输出。它在一个 sn-p 中,如果你运行 sn-p,那不是你看到的记录。
      猜你喜欢
      • 2016-03-06
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 2020-09-13
      • 2014-11-15
      • 2021-04-03
      • 2021-12-14
      • 2011-10-29
      相关资源
      最近更新 更多