按键值对 JSON 响应进行排序

fir*_*ber 5 javascript arrays sorting json object

在您将其标记为重复之前 - 我已经浏览了这些答案:

\n\n

按数组键值对 JSON 进行排序

\n\n

使用 Javascript 按值对 JSON 数组对象进行排序

\n\n

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

\n\n

这是我得到的一些 JSON 响应(浏览器控制台的屏幕截图)

\n\n

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

\n\n

此回复来自维基百科 - 作为旁白。这是完整的 API 调用(如果有帮助的话)。

\n\n

编辑:在此处发布一些响应代码:

\n\n
 "pages": {\n      "736": {\n        "pageid": 736,\n        "ns": 0,\n        "title": "Albert Einstein",\n        "index": 2,\n        "contentmodel": "wikitext",\n        "pagelanguage": "en",\n        "pagelanguagehtmlcode": "en",\n        "pagelanguagedir": "ltr",\n        "touched": "2018-01-24T22:40:11Z",\n        "lastrevid": 821432412,\n        "length": 145560,\n        "fullurl": "https://en.wikipedia.org/wiki/Albert_Einstein",\n        "editurl": "https://en.wikipedia.org/w/index.php?title=Albert_Einstein&action=edit",\n        "canonicalurl": "https://en.wikipedia.org/wiki/Albert_Einstein",\n        "thumbnail": {\n          "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",\n          "width": 38,\n          "height": 50\n        },\n        "pageimage": "Einstein_1921_by_F_Schmutzer_-_restoration.jpg"\n      },\n      "983": {\n        "pageid": 983,\n        "ns": 0,\n        "title": "Albert Camus",\n        "index": 10,\n        "contentmodel": "wikitext",\n        "pagelanguage": "en",\n        "pagelanguagehtmlcode": "en",\n        "pagelanguagedir": "ltr",\n        "touched": "2018-01-26T09:34:35Z",\n        "lastrevid": 822358239,\n        "length": 53639,\n        "fullurl": "https://en.wikipedia.org/wiki/Albert_Camus",\n        "editurl": "https://en.wikipedia.org/w/index.php?title=Albert_Camus&action=edit",\n        "canonicalurl": "https://en.wikipedia.org/wiki/Albert_Camus",\n        "thumbnail": {\n          "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",\n          "width": 42,\n          "height": 50\n        },\n        "pageimage": "Albert_Camus,_gagnant_de_prix_Nobel,_portrait_en_buste,_pos\xc3\xa9_au_bureau,_faisant_face_\xc3\xa0_gauche,_cigarette_de_tabagisme.jpg"\n      },\n      "46721": {\n        "pageid": 46721,\n        "ns": 0,\n        "title": "Edward VII",\n        "index": 9,\n        "contentmodel": "wikitext",\n        "pagelanguage": "en",\n        "pagelanguagehtmlcode": "en",\n        "pagelanguagedir": "ltr",\n        "touched": "2018-01-26T02:00:27Z",\n        "lastrevid": 821663314,\n        "length": 81925,\n        "fullurl": "https://en.wikipedia.org/wiki/Edward_VII",\n        "editurl": "https://en.wikipedia.org/w/index.php?title=Edward_VII&action=edit",\n        "canonicalurl": "https://en.wikipedia.org/wiki/Edward_VII",\n        "thumbnail": {\n          "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Edward_VII_in_coronation_robes.jpg/35px-Edward_VII_in_coronation_robes.jpg",\n          "width": 35,\n          "height": 50\n        },\n        "pageimage": "Edward_VII_in_coronation_robes.jpg"\n      }\n
Run Code Online (Sandbox Code Playgroud)\n

Ele*_*Ele 1

这是我的方法,只需转换为数组,然后返回 JSON 对象。

\n\n

更新:我所做的是创建一个数组,page然后使用Array.prototype.sort()数组函数比较每个数组的索引page,然后使用for-loop排序数组中的对象重新创建 JSON 对象。

\n\n

\r\n
\r\n
var json = {\r\n  "pages": {\r\n    "983": {\r\n      "pageid": 983,\r\n      "ns": 0,\r\n      "title": "Albert Camus",\r\n      "index": 10,\r\n      "contentmodel": "wikitext",\r\n      "pagelanguage": "en",\r\n      "pagelanguagehtmlcode": "en",\r\n      "pagelanguagedir": "ltr",\r\n      "touched": "2018-01-26T09:34:35Z",\r\n      "lastrevid": 822358239,\r\n      "length": 53639,\r\n      "fullurl": "https://en.wikipedia.org/wiki/Albert_Camus",\r\n      "editurl": "https://en.wikipedia.org/w/index.php?title=Albert_Camus&action=edit",\r\n      "canonicalurl": "https://en.wikipedia.org/wiki/Albert_Camus",\r\n      "thumbnail": {\r\n        "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",\r\n        "width": 42,\r\n        "height": 50\r\n      },\r\n      "pageimage": "Albert_Camus,_gagnant_de_prix_Nobel,_portrait_en_buste,_pos\xc3\xa9_au_bureau,_faisant_face_\xc3\xa0_gauche,_cigarette_de_tabagisme.jpg"\r\n    },\r\n    "736": {\r\n      "pageid": 736,\r\n      "ns": 0,\r\n      "title": "Albert Einstein",\r\n      "index": 2,\r\n      "contentmodel": "wikitext",\r\n      "pagelanguage": "en",\r\n      "pagelanguagehtmlcode": "en",\r\n      "pagelanguagedir": "ltr",\r\n      "touched": "2018-01-24T22:40:11Z",\r\n      "lastrevid": 821432412,\r\n      "length": 145560,\r\n      "fullurl": "https://en.wikipedia.org/wiki/Albert_Einstein",\r\n      "editurl": "https://en.wikipedia.org/w/index.php?title=Albert_Einstein&action=edit",\r\n      "canonicalurl": "https://en.wikipedia.org/wiki/Albert_Einstein",\r\n      "thumbnail": {\r\n        "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",\r\n        "width": 38,\r\n        "height": 50\r\n      },\r\n      "pageimage": "Einstein_1921_by_F_Schmutzer_-_restoration.jpg"\r\n    }\r\n  }\r\n};\r\n\r\nvar array = [];\r\nfor (key in json.pages) {\r\n  array.push(json.pages[key]);\r\n}\r\n\r\narray.sort(function(a, b) {\r\n  return a.index - b.index;\r\n});\r\n\r\njson = {\r\n  "pages": {}\r\n};\r\n\r\nfor (var i = 0; i < array.length; i++) {\r\n  json.pages[array[i][\'pageid\']] = array[i];\r\n}\r\n\r\nconsole.log(json);
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

希望能帮助到你!

\n