[英]Function to sort a JSON object by value
Example of the JSON I'm trying to sort:我正在尝试排序的 JSON 示例:
{
"auctions": [{
"uuid": "533cbc92429c4456b2c013607eed5c38",
"auctioneer": "5ba9f43481854fe891f94dfbd771b065",
"profile_id": "4bec273ae4fa4ebd80169b734d0702bc",
"coop": ["5ba9f43481854fe891f94dfbd771b065"],
"start": 1600978137016,
"end": 1600999737016,
"item_name": "Hologram",
"item_lore": "§8Furniture\n§8Colored\n\n§7Add some flare to your island\n§7with custom floating text!\n\n§6§lLEGENDARY",
"extra": "Hologram Skull Item",
"category": "misc",
"tier": "LEGENDARY",
"starting_bid": 300000,
"item_bytes": "H4sIAAAAAAAAAE1Ry26bQBS9dtIG01b5gkpUyhYFbAOmUheWTQKWAcfPmE01mIGMMwMWDE3wP/Q7vO03+MOqTtpNV1f3nHPPfckAHWgRGQBabWiTpPWzBe9GRZ3zlgwXHGUX0HFJgu8oyiqh+i2DvHiuKQ1fclxK0PYSuNGsLsYxMlUr1W21Z5qGag+6qYoslMZmjLAV66JuVhYHXHKCqw5IHL/yusTV39YSvFsjWmP4hZuJFj0+acnjhO4azxT5cqHR0NsfLC9fN/HIMz0meHdoThv7P63B0cag297kKcof6pittWlvTrE713ds9SMcJzRazmkwzoxg4xjbY0T9/cPR/xe7wX69D5bbYzj2ej5zjhFb0+3GN4Llqh+OJyzaPzfbzero7x1dxF5EJnb6qH0T08twlZDqQFHTgctpUWJJgFfw8Xwa3NVlTt7WBFlko4IKNhGscj5ZwyRRqoJhJaWoxAovlKaoS4VUFOUJfBaKF8KflF1d8YIJUYE4yTPl7W5fhMX1+WSeT3Tq3DvBeDjfSnAZIIbhg8Bd0SgrEROjXTuvvERDzksS1xxXEnSKkmQkX6IMPi3ccPZ9tpqP3OHCkd7+D5IbTsP7+dAXhnUtgBsztZHdTRM11nWk9gcWVm1s9NXdzhzocZrEtqEJW04YrjhiB7i2b7v9266m9L9qA2XmA7Th/RgxlGG4APgDfkDxxHQCAAA=",
"claimed": false,
"claimed_bidders": [],
"highest_bid_amount": 0,
"bin": true,
"bids": []
}, {
"uuid": "4803a8c0e1674dfb9bf7581975d6181f",
"auctioneer": "aa277b630ed94690905b955024e4ae21",
"profile_id": "16df394a108042a18c32a57684369aac",
"coop": ["b00fc41206a74e5886767298081ff151", "aa277b630ed94690905b955024e4ae21", "ab8012ba98fa46d994e393406a0cccd5", "9680e1dd20aa4e01b0bb79e6413983fe"],
"start": 1600977772109,
"end": 1600999372109,
"item_name": "Hologram",
"item_lore": "§8Furniture\n§8Colored\n\n§7Add some flare to your island\n§7with custom floating text!\n\n§6§lLEGENDÄR",
"extra": "Hologram Skull Item",
"category": "misc",
"tier": "LEGENDARY",
"starting_bid": 399999,
"item_bytes": "H4sIAAAAAAAAAE1Ry26bQBS9dpIG01b5gkpUyhYFPwATqQvLJgHLgOO32VSDGZNxZsCCoQled9vv8Lbf4P5X1XG76erqnnPuuS8ZoAE1IgNArQ51Etd+1OCqn5Upr8lwwVFyAQ2HxPiBoqQQqt8yyNOXktLgNcW5BHU3hlvNbGEcIUM1t01LbRuGrlrd1lZFJtpGRoSwGTVF3TjP9jjnBBcNkDh+42WOi7+tJbhaIFpi+ImroRaunrV4NaSbyjVEPptqNHB3e9NNF1XUdw2XCd7pGaPK+k+rc7TU6bo9fA7TpzJiC23UnlDsTJobNv8WDGIazibUHyS6v7T19SGk3u7p4P2LLX+32Pmz9SEYuG2P2YeQLeh66en+bN4JBkMW7l6q9XJ+8HZ2U8R2SIbWdqV9EdPLcB2TYk9R1YDLUZZjSYDX8OF07D6UeUrOa4Issn5GBRsLVjkdzV4cK0XGsLKlKMcKz5QqK3OFFBSlMXwSilfCn5VNWfCMCVGGOEkT5Xy3z8Li5nQ0Tkc6sh9tf/Dr+0SCSx8xDO8F7ohGSY6YGO3GfuM56nGek6jkuJCgkeUkIekMJfBx6gTjr+P5pO/0prZ0/j9ITjAKHic9TxiWpQBuo2gTd40mUg1L19WO0cVq1zQ0FVmmrnXwdmO1TGHLCcMFR2wPN9Zdq3PX0pTOvdZUxh5AHd4NEEMJhguAPwiTikl0AgAA",
"claimed": false,
"claimed_bidders": [],
"highest_bid_amount": 0,
"bin": true,
"bids": []
}
}
I would like to sort the objects from lowest to highest using the "starting_bid"
key's value.我想使用"starting_bid"
键的值从低到高对对象进行排序。 Is this possible?这可能吗? From my research I heard I had to convert the data to an array to search from it, is there a way to do that (since the JSON object came from an API request).从我的研究中,我听说我必须将数据转换为数组才能从中搜索,有没有办法做到这一点(因为 JSON 对象来自 API 请求)。 Also, is it possible to make the 'sorting algorithm' into a function?另外,是否可以将“排序算法”变成一个函数? I'm happy to give any info you need.我很乐意提供您需要的任何信息。
Edit: Attempted Solutions (so far): Solution 1 (Didn't Work)编辑:尝试的解决方案(到目前为止):解决方案 1(不起作用)
function sortByValue(data) {
const sortable = Object.entries(data)
.sort(([, a], [, b]) => a - b)
.reduce((r, [k, v]) => ({ ...r, [k]: v }), {});
}
Solution 2 (Thanks Besufkad Menji) (Worked):解决方案 2(感谢 Besufkad Menji)(有效):
function sortByValue(data) {
data.auctions.sort((a, b)=>a.starting_bid - b.starting_bid);
return data;
}
from lowest to highest:从低到高:
myJson.auctions.sort((a,b)=>a.starting_bid-b.starting_bid)
from highest to lowest:从高到低:
myJson.auctions.sort((a,b)=>b.starting_bid-a.starting_bid)
您可以使用排序 =D
const sort = a['auctions'].sort((a,b) => a['starting_bid'] - b['starting_bid'])
Here's what I would do:这是我会做的:
const json = { "auctions": [{ "uuid": "533cbc92429c4456b2c013607eed5c38", "auctioneer": "5ba9f43481854fe891f94dfbd771b065", "profile_id": "4bec273ae4fa4ebd80169b734d0702bc", "coop": ["5ba9f43481854fe891f94dfbd771b065"], "start": 1600978137016, "end": 1600999737016, "item_name": "Hologram", "item_lore": "§8Furniture\\n§8Colored\\n\\n§7Add some flare to your island\\n§7with custom floating text!\\n\\n§6§lLEGENDARY", "extra": "Hologram Skull Item", "category": "misc", "tier": "LEGENDARY", "starting_bid": 300000, "item_bytes": "H4sIAAAAAAAAAE1Ry26bQBS9dtIG01b5gkpUyhYFbAOmUheWTQKWAcfPmE01mIGMMwMWDE3wP/Q7vO03+MOqTtpNV1f3nHPPfckAHWgRGQBabWiTpPWzBe9GRZ3zlgwXHGUX0HFJgu8oyiqh+i2DvHiuKQ1fclxK0PYSuNGsLsYxMlUr1W21Z5qGag+6qYoslMZmjLAV66JuVhYHXHKCqw5IHL/yusTV39YSvFsjWmP4hZuJFj0+acnjhO4azxT5cqHR0NsfLC9fN/HIMz0meHdoThv7P63B0cag297kKcof6pittWlvTrE713ds9SMcJzRazmkwzoxg4xjbY0T9/cPR/xe7wX69D5bbYzj2ej5zjhFb0+3GN4Llqh+OJyzaPzfbzero7x1dxF5EJnb6qH0T08twlZDqQFHTgctpUWJJgFfw8Xwa3NVlTt7WBFlko4IKNhGscj5ZwyRRqoJhJaWoxAovlKaoS4VUFOUJfBaKF8KflF1d8YIJUYE4yTPl7W5fhMX1+WSeT3Tq3DvBeDjfSnAZIIbhg8Bd0SgrEROjXTuvvERDzksS1xxXEnSKkmQkX6IMPi3ccPZ9tpqP3OHCkd7+D5IbTsP7+dAXhnUtgBsztZHdTRM11nWk9gcWVm1s9NXdzhzocZrEtqEJW04YrjhiB7i2b7v9266m9L9qA2XmA7Th/RgxlGG4APgDfkDxxHQCAAA=", "claimed": false, "claimed_bidders": [], "highest_bid_amount": 0, "bin": true, "bids": [] }, { "uuid": "4803a8c0e1674dfb9bf7581975d6181f", "auctioneer": "aa277b630ed94690905b955024e4ae21", "profile_id": "16df394a108042a18c32a57684369aac", "coop": ["b00fc41206a74e5886767298081ff151", "aa277b630ed94690905b955024e4ae21", "ab8012ba98fa46d994e393406a0cccd5", "9680e1dd20aa4e01b0bb79e6413983fe"], "start": 1600977772109, "end": 1600999372109, "item_name": "Hologram", "item_lore": "§8Furniture\\n§8Colored\\n\\n§7Add some flare to your island\\n§7with custom floating text!\\n\\n§6§lLEGENDÄR", "extra": "Hologram Skull Item", "category": "misc", "tier": "LEGENDARY", "starting_bid": 399999, "item_bytes": "H4sIAAAAAAAAAE1Ry26bQBS9dpIG01b5gkpUyhYFPwATqQvLJgHLgOO32VSDGZNxZsCCoQled9vv8Lbf4P5X1XG76erqnnPuuS8ZoAE1IgNArQ51Etd+1OCqn5Upr8lwwVFyAQ2HxPiBoqQQqt8yyNOXktLgNcW5BHU3hlvNbGEcIUM1t01LbRuGrlrd1lZFJtpGRoSwGTVF3TjP9jjnBBcNkDh+42WOi7+tJbhaIFpi+ImroRaunrV4NaSbyjVEPptqNHB3e9NNF1XUdw2XCd7pGaPK+k+rc7TU6bo9fA7TpzJiC23UnlDsTJobNv8WDGIazibUHyS6v7T19SGk3u7p4P2LLX+32Pmz9SEYuG2P2YeQLeh66en+bN4JBkMW7l6q9XJ+8HZ2U8R2SIbWdqV9EdPLcB2TYk9R1YDLUZZjSYDX8OF07D6UeUrOa4Issn5GBRsLVjkdzV4cK0XGsLKlKMcKz5QqK3OFFBSlMXwSilfCn5VNWfCMCVGGOEkT5Xy3z8Li5nQ0Tkc6sh9tf/Dr+0SCSx8xDO8F7ohGSY6YGO3GfuM56nGek6jkuJCgkeUkIekMJfBx6gTjr+P5pO/0prZ0/j9ITjAKHic9TxiWpQBuo2gTd40mUg1L19WO0cVq1zQ0FVmmrnXwdmO1TGHLCcMFR2wPN9Zdq3PX0pTOvdZUxh5AHd4NEEMJhguAPwiTikl0AgAA", "claimed": false, "claimed_bidders": [], "highest_bid_amount": 0, "bin": true, "bids": [] }] } function asc(){ const s = json.auctions.slice(); return s.sort((a, b)=>a.starting_bid-b.starting_bid); } function desc(){ const s = json.auctions.slice(); return s.sort((a, b)=>b.starting_bid-a.starting_bid); } console.log('asc'); console.log(asc()); console.log('desc'); console.log(desc()); // original unchanged because of slices console.log('original'); console.log(json);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.