Javascript node.js按键对JSON排序,键为日期格式

Javascript node.js按键对JSON排序,键为日期格式,javascript,node.js,json,sorting,Javascript,Node.js,Json,Sorting,我正在试验node.js,目前我正在尝试可视化汇率开发,我从一个API获得数据,现在我正在尝试按日期对它们进行排序 我在响应中得到的数据如下所示: { "rates": { "2001-03-07": { "CZK": 34.888 }, "2018-10-09": { "CZK": 25.805 }, "2002-08-15": { "

我正在试验node.js,目前我正在尝试可视化汇率开发,我从一个API获得数据,现在我正在尝试按日期对它们进行排序

我在响应中得到的数据如下所示:

{
    "rates": {
        "2001-03-07": {
            "CZK": 34.888
        },
        "2018-10-09": {
            "CZK": 25.805
        },
        "2002-08-15": {
            "CZK": 31.307
        },
        "2011-12-07": {
            "CZK": 25.328
        }
    },
    "start_at": "1999-01-01",
    "base": "EUR",
    "end_at": "2020-05-21"
}
谁能给我解释一下:
“2001-03-07”:{“CZK”:34.888}
是什么意思?我知道
“2001-03-07”
是一个键,但我不确定
{“CZK”:34.888}
,我知道它是另一个对象,只是
“2001-03-07”
键的一个值。这是正确的吗

如果是,我该如何对此进行排序

我希望按以下顺序获取数据:

    "rates": {
        "2001-03-07": {
            "CZK": 34.888
        },
        "2002-08-15": {
            "CZK": 31.307
        },
        "2011-12-07": {
            "CZK": 25.328
        },
        "2018-10-09": {
            "CZK": 25.805
        }
    }
我发现了很多关于如何按值排序的信息,很少有关于按键排序的信息,但对我来说什么都不管用,这可能吗?如果是这样的话,人们怎么能做到这一点呢

这是我当前的代码:

consthttp=require('https');
变量选项={
主机:“api.exchangeratesapi.io”,
路径:'/history?起始时间=1999-01-01,结束时间=2020-05-21,基数=EUR,符号=CZK'
};
回调=函数(响应){
var-str='';
var fullData=“”;
变量filteredData=[];
响应.on('data',函数(块){
str+=chunk;
});
response.on('end',function(){
fullData=JSON.parse(str);
filteredData.push(fullData.rates);
函数自定义排序(a、b){
返回新日期(a.rates).getTime()-新日期(b.rates).getTime();
}
让测试=filteredData.sort(自定义排序);
控制台日志(测试);
});
}
请求(选项,回调).end();

谢谢

您可以将对象转移到一个结构稍有不同的数组中,但按如下所示的数组进行排序。您将获得一种稍微不同的数据格式(假设
date
在子对象中从来都不是键)。幸运的是,日期键的格式很方便,无需自定义比较逻辑即可轻松排序

以数组形式输出的示例:

rates = [
  {
    "date": "2001-03-07",
    "CZK": 34.888
  },
  {
    "date": "2002-08-15",
    "CZK": 31.307
  },
  {
    "date": "2011-12-07",
    "CZK": 25.328
  },
  {
    "date": "2018-10-09",
    "CZK": 25.805
  }
]
const输入={
“费率”:{
"2001-03-07": {
“捷克克朗”:34.888
},
"2018-10-09": {
“捷克克朗”:25.805
},
"2002-08-15": {
“捷克克朗”:31.307
},
"2011-12-07": {
“捷克克朗”:25.328
}
},
“起始日期”:“1999-01-01”,
“基础”:“欧元”,
“结束时间”:“2020-05-21”
};
const rates=Object.keys(input.rates).sort().map(
日期=>({date,…input.rates[date]})
);

控制台日志(费率)
JSON是一种文本格式,类似于CSV或XML,因此除非您尝试处理纯文本,否则您实际上是在询问如何对数组排序,或者在本例中,尝试对对象排序。这是否回答了您的问题?您好@HereticMonkey,非常感谢您的评论。我知道JSON是一种文本格式。我只是不确定什么是“某物”:{“某物”:12345}。从您的回答中,我理解它是一个JSON对象,它是另一个JSON对象中另一个键的值,对吗?不涉及JSON。只是一个对象,它的属性有一个对象值。我明白了,很抱歉我在这里错误地使用了JSON,如果你可以这样调用它,我指的是JSON结构。但是是的,我现在明白了。谢谢很好地工作,我将不得不花一些时间来试验这个完全掌握的想法。非常感谢你。