javascript - 按键值对 JSON 响应进行排序

标签 javascript arrays json sorting object

在您将此标记为重复之前 - 我已经完成了这些答案:

Sort JSON by array key value

Sort a JSON array object using Javascript by value

而且我已经尝试将代码移到我的数据中,但它不起作用。我也尝试过将每个对象项放入一个数组中,但这不起作用,因为每个项中仍然有一个对象。

Here's a bit of the JSON response I get (浏览器控制台截图)

如您所见,每个项目都有一个索引 - 我需要的是根据索引对响应进行排序。我该怎么做呢?

此回复来自维基百科 - 顺便说一句。 Here's the full API call ,如果有帮助的话。

编辑:在这里发布一些响应代码:

 "pages": {
      "736": {
        "pageid": 736,
        "ns": 0,
        "title": "Albert Einstein",
        "index": 2,
        "contentmodel": "wikitext",
        "pagelanguage": "en",
        "pagelanguagehtmlcode": "en",
        "pagelanguagedir": "ltr",
        "touched": "2018-01-24T22:40:11Z",
        "lastrevid": 821432412,
        "length": 145560,
        "fullurl": "https://en.wikipedia.org/wiki/Albert_Einstein",
        "editurl": "https://en.wikipedia.org/w/index.php?title=Albert_Einstein&action=edit",
        "canonicalurl": "https://en.wikipedia.org/wiki/Albert_Einstein",
        "thumbnail": {
          "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Einstein_1921_by_F_Schmutzer_-_restoration.jpg/38px-Einstein_1921_by_F_Schmutzer_-_restoration.jpg",
          "width": 38,
          "height": 50
        },
        "pageimage": "Einstein_1921_by_F_Schmutzer_-_restoration.jpg"
      },
      "983": {
        "pageid": 983,
        "ns": 0,
        "title": "Albert Camus",
        "index": 10,
        "contentmodel": "wikitext",
        "pagelanguage": "en",
        "pagelanguagehtmlcode": "en",
        "pagelanguagedir": "ltr",
        "touched": "2018-01-26T09:34:35Z",
        "lastrevid": 822358239,
        "length": 53639,
        "fullurl": "https://en.wikipedia.org/wiki/Albert_Camus",
        "editurl": "https://en.wikipedia.org/w/index.php?title=Albert_Camus&action=edit",
        "canonicalurl": "https://en.wikipedia.org/wiki/Albert_Camus",
        "thumbnail": {
          "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/08/Albert_Camus%2C_gagnant_de_prix_Nobel%2C_portrait_en_buste%2C_pos%C3%A9_au_bureau%2C_faisant_face_%C3%A0_gauche%2C_cigarette_de_tabagisme.jpg/42px-Albert_Camus%2C_gagnant_de_prix_Nobel%2C_portrait_en_buste%2C_pos%C3%A9_au_bureau%2C_faisant_face_%C3%A0_gauche%2C_cigarette_de_tabagisme.jpg",
          "width": 42,
          "height": 50
        },
        "pageimage": "Albert_Camus,_gagnant_de_prix_Nobel,_portrait_en_buste,_posé_au_bureau,_faisant_face_à_gauche,_cigarette_de_tabagisme.jpg"
      },
      "46721": {
        "pageid": 46721,
        "ns": 0,
        "title": "Edward VII",
        "index": 9,
        "contentmodel": "wikitext",
        "pagelanguage": "en",
        "pagelanguagehtmlcode": "en",
        "pagelanguagedir": "ltr",
        "touched": "2018-01-26T02:00:27Z",
        "lastrevid": 821663314,
        "length": 81925,
        "fullurl": "https://en.wikipedia.org/wiki/Edward_VII",
        "editurl": "https://en.wikipedia.org/w/index.php?title=Edward_VII&action=edit",
        "canonicalurl": "https://en.wikipedia.org/wiki/Edward_VII",
        "thumbnail": {
          "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Edward_VII_in_coronation_robes.jpg/35px-Edward_VII_in_coronation_robes.jpg",
          "width": 35,
          "height": 50
        },
        "pageimage": "Edward_VII_in_coronation_robes.jpg"
      }

最佳答案

您的回复似乎是一个无法排序的对象。您首先要将其转换为数组

const res = //... your response
const array = Object.keys(res).map(key => res[key]);

现在您可以使用 Array.sort 函数按它们的索引对您的项目进行排序:

array.sort((itemA, itemB) =>  itemA - itemB)

请注意排序函数直接改变数组。

参见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

关于javascript - 按键值对 JSON 响应进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48460082/

相关文章:

java - 如何使用 Jackson 库获取 JSON 响应的嵌套属性?

javascript - 不希望任何空白条目附加到列表 jQuery

javascript - 如何从一个笛卡尔坐标获得边界框?

javascript - 在 Rails 中,如何将 link_to 与谷歌地图一起使用来创建可点击的链接?

php - 按日期字段对对象数组进行排序

javascript - 替换 json/jsObject/string 中的多个值

javascript - ng-grid 单元格点击事件回调

php - 如何在 PHP 中迭代 Dropbox 结果数组

java - 结果集到二维数组

c# - 反序列化 PSON 文件