Javascript 如何按键值对对象数组进行排序
我有一个如下数组的对象,我试图按其值(秩)进行升序和降序排序 所以,如果降序,输出数组如下所示。。反之为上升Javascript 如何按键值对对象数组进行排序,javascript,Javascript,我有一个如下数组的对象,我试图按其值(秩)进行升序和降序排序 所以,如果降序,输出数组如下所示。。反之为上升 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.bn
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);
这就是我如何创建这个对象,请告诉我,如果这件事可以很容易地做任何选择
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},
排序=对象。分配(…对象
.条目(数据)
.sort({1:{bnrank:a},{1:{bnrank:b}})=>b-a)
.map(([k,v])=>({[k]:v}))
);
控制台日志(已排序)代码>
.as控制台包装{max height:100%!important;top:0;}
显示的数据没有有效的结构。请提供一个适当的例子,因为JavaScript对象是无序的集合-这意味着不能保证其属性的顺序。考虑使用一个数组(或者如果你使用ES6的话)。请看这篇文章:嗨,我在对象中有数组,你们已经给出了对象中对象的例子。请添加那个数组,你们有。文章中的上述数据无效,也不是数组。嗨,我在我的问题中添加了数组,它看起来和你很相似。但在开发人员控制台中,它仅以旧的顺序显示对象。在console.log中有哪个变量?也许数组会更好…我做了console.log(排序),其他问题表示无法保证对象排序,请查看我的问题,我已编辑了如何创建此对象,您能否告诉我其他一些方法来创建此对象并使任务更轻松。
{
"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