javascript - 如何过滤一个 JS 对象并按日期排序?
问题描述
JS级别:菜鸟。
我有以下对象,其中包含 ~130 个trades
对象:
{
"trades": {
"model": "Trades_Information"
"fields": {
"orderCloseTime": "2019-12-19T16:20:56",
[...]
},
"model": "Trades_Information"
"fields": {
"orderCloseTime": null,
[...]
},
"model": "Trades_Information"
"fields": {
"orderCloseTime": 2019-12-17T16:20:56,
[...]
},
[...]
}
现在我尝试定义一个函数,该函数splices
包含所有对象,orderCloseTime: null
并按日期对剩余对象进行排序。
使用几个 SO 线程和 JS 文档,我现在以这种愚蠢的尝试结束:
// loop and splice where if-condition is met
jQuery(trades).each(function (index){
if(trades[index].fields.orderCloseTime == null){
trades.splice(index,1);
return false;
}
});
// define sort function
function trades_sort(a, b) {
return new Date(a.orderCloseTime).getTime() - new Date(b.orderCloseTime).getTime();
}
// sort remaining objects
trades.sort(trades_sort);
当我运行代码时,它只拼接一个对象,而它应该拼接其中的六个,并且 sort 函数实际上根本不排序。
解决方案
JSON 中的字段不应重复,您只有 2 个键“字段”和“模型”
所以只会加载根据您的信息的两个元素
主要问题是不正确的json
关于代码我不知道什么是交易,什么是 jQuery,但如果交易是对象数组,那么你可以过滤它
trades.filter(v => v.fields.orderCloseTime)
使用排序功能一切都是正确的