【发布时间】:2020-09-08 16:54:46
【问题描述】:
我正在尝试使用 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
}
}
我发现了很多关于如何按值排序的信息,而很少有关于按键排序的信息,但对我来说没有什么真正有用的,这甚至可能吗?如果是这样,怎么可能做到这一点?
这是我当前的代码:
const http = require('https');
var options = {
host: 'api.exchangeratesapi.io',
path: '/history?start_at=1999-01-01&end_at=2020-05-21&base=EUR&symbols=CZK'
};
callback = function(response) {
var str = '';
var fullData = '';
var filteredData = [];
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
fullData = JSON.parse(str);
filteredData.push(fullData.rates);
function custom_sort(a, b) {
return new Date(a.rates).getTime() - new Date(b.rates).getTime();
}
let testing = filteredData.sort(custom_sort);
console.log(testing);
});
}
http.request(options, callback).end();
谢谢
【问题讨论】:
-
JSON 是一种文本格式,如 CSV 或 XML,因此除非您尝试处理纯文本,否则您实际上是在询问如何对数组进行排序,或者在这种情况下,尝试对对象。
-
这能回答你的问题吗? Sort JavaScript object by key
-
嗨@HereticMonkey,非常感谢您的评论。我知道 JSON 是一种文本格式。我只是不太确定 "something" : { "something": 12345 } 是什么。从你的回答我知道它是一个 JSON 对象,它是另一个 json 对象中另一个键的值,对吗?
-
不涉及 JSON。只是一个具有对象值的属性的对象。
-
我明白了,抱歉我在这里错误地使用了 JSON,如果你可以这样称呼它,我的意思是 JSON 结构。但是,是的,我现在明白了。谢谢!
标签: javascript node.js json sorting