按键值对JSON响应进行排序 [英] Sort JSON response by key value
问题描述
在您将其标记为重复之前,我已经经历了以下答案:
Before you tag this as duplicate - I've gone through these answers:
我已经尝试将代码移到我的数据上,但是它不起作用.我也尝试将每个对象项都推入数组中,但这是行不通的,因为每个项中仍然有一个对象.
And I've tried moving the code over to my data, and it doesn't work. I've tried pushing each object item into an array as well, but that doesn't work because there's still an object inside each item.
这里有一些我得到的JSON响应(来自浏览器控制台的截图)
Here's a bit of the JSON response I get (screenshot from the browser console)
如您所见,每个项目都有一个索引-我需要的是根据索引对响应进行排序.我该怎么做呢?
As you can see, each item has an index - what I need is to sort the response according to the index. How do I do this?
This response is from wikipedia - as an aside. Here's the full API call, if it helps.
在此处发布一些响应代码:
Posting a bit of the response code here:
"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"
}
推荐答案
这是我的方法,只需转换为数组,然后取回JSON对象即可.
This is my approach, just convert to an array and then get back the JSON Object.
UPDATE: What I did was create an array of every page
then using the Array.prototype.sort()
function for Arrays I compared the index for each page
then using a for-loop
I recreated the JSON object using the objects within the sorted Array.
var json = {
"pages": {
"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"
},
"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"
}
}
};
var array = [];
for (key in json.pages) {
array.push(json.pages[key]);
}
array.sort(function(a, b) {
return a.index - b.index;
});
json = {
"pages": {}
};
for (var i = 0; i < array.length; i++) {
json.pages[array[i]['pageid']] = array[i];
}
console.log(json);
希望有帮助!
这篇关于按键值对JSON响应进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!