javascript - 使用多个 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 日
样本数据:
解决方案
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。
推荐阅读
- reactjs - react-bootstrap-table2 - 将行数据传递给创建到格式函数中的子组件
- html - 为什么我的网站的 CSS 代码在 bootstrap studio 中没有响应?
- r - 使用 R 的摘要包的机器之间的 MD5 哈希不一致
- javascript - 在 .cshtml 中使用类库 C# 变量
- algorithm - 对给定数组的 XOR 查询
- html - 如何删除闪亮仪表板中框之间的空间(尝试了其他解决方案,但没有一个可行)
- c# - 个性化 ASP.NET MVC OutputCache
- android - 如何编写 Compose 测试用例来检查在 android 中加载或未加载的 lottie 文件
- spring-boot - Spring批处理尝试创建表
- kotlin - Ktor - 从 Json 文件创建列表