简体   繁体   English

按键降序对对象进行排序

[英]Sort object by key in descending order

This is simple yet most painful question for me.这对我来说是一个简单但最痛苦的问题。

Take an example of following snippet of code:以以下代码片段为例:

 const test = {}; test[2] = 'value2'; test[1] = 'value1'; console.log(test);

The result of above snippet is:上面代码片段的结果是:

{
  1: "value1",
  2: "value2"
}

I want to pass this object as it is with following result:我想按原样传递这个对象,结果如下:

{
  2: "value2",
  1: "value1"
}

PS: I tried Object.keys(test).sort() and Object.keys(test).reverse() and then chained it with function for re-creating the object but nothing seems to be working for me. PS:我尝试了Object.keys(test).sort()Object.keys(test).reverse()然后将它与重新创建对象的函数链接起来,但似乎没有任何东西对我有用。

i check this you can use something like this to extend your key and values into another object我检查了这个你可以使用这样的东西将你的键和值扩展到另一个对象中

{key:"" , value:""} {核心价值:””}

 const test = {}; test[2] = 'value2'; test[1] = 'value1'; test[4] = 'value4'; var r = Object.keys(test).sort().reverse() console.log(r); var sorted ={} //look like JS Sorted this ASC r.forEach(k => { sorted[k] = test[k] }); console.log(JSON.stringify(sorted)); // So use Array var sorted =[] r.forEach(k => { sorted.push({"key":k ,"value": test[k]}) }); console.log(JSON.stringify(sorted));

It's not possible with positive integer keys.使用正整数键是不可能的。 It may kind of work on most browsers (but probably not all) with non-positive integer keys : [-2] , [.2] , ['2 '] , etc.它可能适用于大多数具有非正整数键的浏览器(但可能不是全部): [-2][.2]['2 ']等。

 const obj = { '2 ': "value2", '1 ': "value1" }; console.log(obj); console.log( JSON.stringify(obj, 0, 2).replace(/ ": "/g, '": "') );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM