简体   繁体   English

基于键的降序对象

[英]Descending order object based on keys

I am using some API and they return json in following format , problem is they send keys as floating number.I cannot modify their backend part to make proper json.So I am looking for quickfix to show following data in descending order.我正在使用一些 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: {…}}

I want to reverse it in descending order , I was trying to figure out how to do it for past 3 hours.我想按降序反转它,我试图弄清楚过去 3 个小时如何做到这一点。

I tried following code我试过以下代码

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;
      }

This will create an array of tuples [['255.12', {CE: {…}, PE: {…}}],['250', {CE: {…}, PE: {…}}], …] using Object.entries() and Array.prototype.sort() :这将创建一个元组数组[['255.12', {CE: {…}, PE: {…}}],['250', {CE: {…}, PE: {…}}], …]使用Object.entries()Array.prototype.sort()

function entriesDescending (object) {
  return Object
    .entries(object)
    .sort(([a], [b]) => b - a)
}

 const response = { 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}) const byNumberKey = ([a], [b]) => a - b const sortKeys = obj => Object.entries(obj) .sort(byNumberKey) .reduce(fromEntries, {}) console.log( sortKeys(response) )

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

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