JS级别: noob。
我有以下对象,它包含大约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,
[...]
},
[...]
}现在,我尝试定义一个函数,该函数对包含orderCloseTime: null的所有对象执行splices操作,并按日期对其余对象进行排序。
使用几个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);当我运行代码时,它只拼接一个对象,而它应该拼接其中的六个,排序函数从字面上看根本不排序。
发布于 2019-12-21 03:34:01
json把问题放在一边,就好像你展示的代码正在运行,那么它可能是一个复制错误……你只需要使用过滤器并链接你的排序操作符:
trades = trades.filter(trade => !!trade.fields.orderCloseTime)
.sort(trades_sort);发布于 2019-12-21 03:28:12
JSON中的字段不能重复,只有两个键“field”和"model“
因此,只会根据您的信息加载两个元素
主要问题是json不正确。
关于代码,我不知道什么是交易,什么是jQuery,但如果交易是对象的数组,那么你可以直接过滤它
trades.filter(v => v.fields.orderCloseTime)使用排序函数,一切都是正确的
https://stackoverflow.com/questions/59430328
复制相似问题