Javascript 按名称而不是值对JSON排序

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

我正在用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             |    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
 });

按日期,或按时间间隔内的调用次数?请显示负责获取此数据的代码以及如何初始化图表。