gpt4 book ai didi

javascript - 如何按键值对对象数组进行排序

转载 作者:行者123 更新时间:2023-11-30 11:10:26 25 4
gpt4 key购买 nike

我有一个带有如下数组的对象,我试图按它的值(等级)对它进行升序和降序排序

AXISBANK: [rank: 110, bnrank: 110, bs: 75, ss: 3]
BANKBARODA: [rank: 32, bnrank: 5, bs: 83, ss: 26]
HDFCBANK: [rank: 453, bnrank: 453, bs: 52, ss: 33]

所以输出数组如下所示,如果降序..和反向升序

HDFCBANK: [rank: 453, bnrank: 453, bs: 52, ss: 33]
AXISBANK: [rank: 110, bnrank: 110, bs: 75, ss: 3]
BANKBARODA: [rank: 32, bnrank: 5, bs: 83, ss: 26]

我试过下面的代码

scorearr.sort((obj1, obj2) => obj1.bnrank - obj2.bnrank);

还有下面的代码

function compares(a,b) {
console.log(a.bnrank);
if (a.bnrank < b.bnrank)
return -1;
if (a.bnrank > b.bnrank)
return 1;
return 0;
}
scorearr.sort(compares);

仍然 scorearr 没有变化,只是旧顺序。

编辑:下面是示例数据

{
"HDFCBANK": {
"rank": 453,
"bnrank": 453,
"bs": 52,
"ss": 33
},
"ICICIBANK": {
"rank": 228,
"bnrank": 228,
"bs": 88,
"ss": 3
},
"KOTAKBANK": {
"rank": 164,
"bnrank": 164,
"bs": 23,
"ss": 82
}
}

这就是我创建这个对象的方式,如果这件事可以轻松完成,请告诉我是否有其他选择。

var scorearr = {};
//loop here
var id = $(this).attr('id');
scorearr[id] = {};
scorearr[id] = {rank:nfscore,bnrank:bnscore,bs:sellscore,ss:buyscore};
//end loop

最佳答案

如果您有一个包含嵌套对象的对象,您可以获取条目(键/值对),对这个数组进行排序并使用排序后的顺序重建一个新对象。

var data = { AXISBANK: { rank: 110, bnrank: 110, bs: 75, ss: 3 }, BANKBARODA: { rank: 32, bnrank: 5, bs: 83, ss: 26 }, HDFCBANK: { rank: 453, bnrank: 453, bs: 52, ss: 33 } },
sorted = Object.assign(...Object
.entries(data)
.sort(({ 1: { bnrank: a } }, { 1: { bnrank: b } }) => b - a)
.map(([k, v]) => ({ [k]: v }))
);

console.log(sorted);
.as-console-wrapper { max-height: 100% !important; top: 0; }

另一种使用数组的方法。

var data = [{ id: 'AXISBANK', rank: 110, bnrank: 110, bs: 75, ss: 3 }, { id: 'BANKBARODA', rank: 32, bnrank: 5, bs: 83, ss: 26 }, { id: 'HDFCBANK', rank: 453, bnrank: 453, bs: 52, ss: 33 }];


data.sort(({ bnrank: a }, { bnrank: b }) => b - a);

console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何按键值对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53915375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com