首页 > 解决方案 > 使用多个 json 数组按日期对 Json 排序并显示结果

问题描述

我有多个 json 并希望通过循环显示信息。但我想按最新日期显示信息。样本数据: 这里是样本数据

var data = JSON.parse(CustomerProfile.custom.BackInStockData);
var bisData = bisData1.sort(function(a,b){return Math.abs(new Date(a.createdAt) - new Date(b.createdAt))});

它应该显示如下结果: 发送 2019 年 7 月 8 日 发送 2019 年 7 月 8 日 发送 2019 年 7 月 5 日 发送 2019 年 7 月 5 日 发送 2019 年 7 月 4 日

样本数据:

标签: javascriptjsondate

解决方案


OP 存在引用错误,因为bisData1未声明或赋值。

假设它是固定的并且一个数组被分配给bisData1,那么将 bisData1.sort 的结果分配bisData创建对同一个数组的两个引用。

如评论中所述,您不应使用Math.abs,因为sort需要负数、零或正数的结果。

尝试引用“创建于”属性时使用了不正确的属性名称。

重现问题所需的所有代码都应作为文本而不是图像发布在问题中。

链接的代码图像有语法错误。你的意思可能是这样的:

let data = [
{"Created At": "Mon Jul 04 2019 13:05:21 GMT-0000 (GMT)","status":"send"},
{"Created At": "Mon Jul 08 2019 13:06:02 GMT-0000 (GMT)","status":"send"},
{"Created At": "Mon Jul 08 2019 14:07:59 GMT-0000 (GMT)","status":"send"},
{"Created At": "Mon Jul 05 2019 13:27:17 GMT-0000 (GMT)","status":"send"},
{"Created At": "Mon Jul 05 2019 13:27:17 GMT-0000 (GMT)","status":"send"}];

data.sort(function(a,b){return new Date(a['Created At']) - new Date(b['Created At'])});

console.log(data);

它按预期工作并对数据数组进行排序。

关于使用内置解析器解析字符串,请参阅为什么 Date.parse 给出不正确的结果?MDN: Date.parse


推荐阅读