Javascript 基于键的降序对象

Javascript 基于键的降序对象,javascript,json,Javascript,Json,我正在使用一些API,它们以以下格式返回json,问题是它们以浮点数的形式发送键。我无法修改它们的后端部分以生成正确的json。所以我正在寻找quickfix,以降序显示以下数据 220: {CE: {…}, PE: {…}} 225: {CE: {…}, PE: {…}} 230: {CE: {…}, PE: {…}} 235.23: {CE: {…}, PE: {…}} 240.32: {CE: {…}, PE: {…}} 245: {CE: {…}, PE: {…}} 250: {CE:

我正在使用一些API,它们以以下格式返回json,问题是它们以浮点数的形式发送键。我无法修改它们的后端部分以生成正确的json。所以我正在寻找quickfix,以降序显示以下数据

220: {CE: {…}, PE: {…}}
225: {CE: {…}, PE: {…}}
230: {CE: {…}, PE: {…}}
235.23: {CE: {…}, PE: {…}}
240.32: {CE: {…}, PE: {…}}
245: {CE: {…}, PE: {…}}
250: {CE: {…}, PE: {…}}
255.12: {CE: {…}, PE: {…}}
我想按降序倒过来,在过去的3个小时里我一直在想怎么做

我尝试了以下代码

function reverseObject(object) {
        var newObject = {};
        var keys = [];
        for (var key in object) {
            keys.push(key);
        }
        for (var i = keys.length - 1; i >= 0; i--) {

          var value = object[keys[i]];
          newObject[keys[i]]= value;
        }       

        return newObject;
      }
const响应={
220:{CE:'foo',PE:'bar'},
225:{CE:'foo',PE:'bar'},
230:{CE:'foo',PE:'bar'},
235.23:{CE:'foo',PE:'bar'},
240.32:{CE:'foo',PE:'bar'},
245:{CE:'foo',PE:'bar'},
250:{CE:'foo',PE:'bar'},
255.12:{CE:'foo',PE:'foo'},
}
const fromEntries=(acc[key,value])=>({…acc[key]:value})
常量byNumberKey=([a],[b])=>a-b
const sortKeys=obj=>
Object.entries(obj)
.sort(byNumberKey)
.reduce(fromEntries,{})
console.log(
排序键(响应)

)
这将创建元组数组
[[['255.12',{CE:{…},PE:{…}],'250',{CE:{…},PE:{…}],…]
使用和:


你在乎保管钥匙吗?对象并没有保证的迭代顺序,所以看起来更像是要按原始键的降序生成一个对象数组,对吗?键对我来说很重要,它是价格,我想在html中按降序显示价格。你得到的不是对象的降序键,如果键是32位整数。这些项按此键升序排序。然后不要生成对象,因为生成的对象将不会更接近于保证迭代顺序的目标。将其转换为非对象的对象,然后使用可用于所选类型的对象的方法进行排序。1。这是升序。2.正如在注释中多次指出的,规范不能保证对象的迭代顺序,因此最好将其保留为数组形式(调用
.reduce()
之前的中间结果)。3.您的
fromEntries()
方法会在
reduce()
的每次迭代中复制累加器,因此即使这是一个好主意,它也确实效率低下。
function entriesDescending (object) {
  return Object
    .entries(object)
    .sort(([a], [b]) => b - a)
}