Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何按键值对对象数组进行排序_Javascript - Fatal编程技术网

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