Javascript 按名称而不是值对JSON排序
我正在用java运行一个查询,以获取某个时间间隔内的调用数量,该查询的结果是:Javascript 按名称而不是值对JSON排序,javascript,java,json,Javascript,Java,Json,我正在用java运行一个查询,以获取某个时间间隔内的调用数量,该查询的结果是: Date(dd/mm/yyyy) | calls _____________________|___________ 17/05/18 | 30 16/05/18 | 36 10/05/18 | 14 27/04/18 | 12 26/04/18
Date(dd/mm/yyyy) | calls
_____________________|___________
17/05/18 | 30
16/05/18 | 36
10/05/18 | 14
27/04/18 | 12
26/04/18 | 90
但当我使用图表js绘制结果时,数据按如下顺序显示
Date(dd/mm/yyyy) | calls
_____________________|___________
10/05/18 | 14
26/04/18 | 90
27/04/18 | 12
16/05/18 | 36
17/05/18 | 30
?如何使用javascript按日期对JSON排序
{2018-05-10: "14", 2018-04-26: "90", 2018-04-27: "12", 2018-05-16: "36", 2018-05-17: "30"}
首先,您的JSON是无效的。这些属性名称(日期)必须作为字符串引用才能有效 现在,最好的方法是将正在生成的JSON实际更改为数组:
data = [
{ "date": "2018-05-10", "hits": "14" },
{ "date": "2018-04-26", "hits": "90" },
// etc
];
如果您在服务器上生成,这应该很容易更改,那么在客户机中处理它应该容易得多。事实上,如果您可以将服务器上的日期格式化为YYYY-MM-DD
,那么,如上所述,Chart.js应该自动将其理解为日期,您可以简单地将其映射到x
轴,如下所示
let data = ... // The array above
let chartData = data.map(function(p) {
return { x: p.date, y: p.hits };
});
var chart = new Chart(ctx, {
type: '...',
data: chartData,
// etc
});
如果出于任何原因,您无法更改生成的JSON的格式(当然,您仍然引用日期以使JSON有效),那么您可以尝试以下方法:
let data = ... // Your JSON corrected to be valid
let chartData = Object.keys(data).map(function(k) {
let date = k.split('/').reverse().join('-');
return { x: date, y: data[k] };
});
var chart = new Chart({
type: '...',
data: chartData,
// etc
});
按日期,或按时间间隔内的调用次数?请显示负责获取此数据的代码以及如何初始化图表。