Javascript 如何过滤JS对象并按日期排序?
JS级别:noob 我有以下对象,其中包含约130个Javascript 如何过滤JS对象并按日期排序?,javascript,Javascript,JS级别:noob 我有以下对象,其中包含约130个交易对象: { "trades": { "model": "Trades_Information" "fields": { "orderCloseTime": "2019-12-19T16:20:56", [...] }, "model": "Trades_Information" "fiel
交易
对象:
{
"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
的所有对象拼接起来,并按日期对其余对象进行排序
使用几个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);
当我运行代码时,它只拼接一个对象,而它应该拼接其中的六个对象,排序函数实际上根本不排序。JSON中的字段不应该重复,您只有两个键 “字段”和“模型” 因此,将只加载符合您的信息的两个元素 主要问题是json不正确 关于代码,我不知道什么是trades,什么是jQuery,但是如果trades是一个对象数组,那么您可以对它进行过滤
trades.filter(v => v.fields.orderCloseTime)
使用sort函数,一切都正确JSON中的字段不应重复,您只有2个键 “字段”和“模型” 因此,将只加载符合您的信息的两个元素 主要问题是json不正确 关于代码,我不知道什么是trades,什么是jQuery,但是如果trades是一个对象数组,那么您可以对它进行过滤
trades.filter(v => v.fields.orderCloseTime)
使用sort函数,一切都是正确的json问题放在一边,就好像您的代码正在运行,那么它可能是一个复制错误。。。您只需要使用筛选和链接排序运算符:
trades = trades.filter(trade => !!trade.fields.orderCloseTime)
.sort(trades_sort);
json问题放在一边,好像你的代码正在运行,那么它可能是一个复制错误。。。您只需要使用筛选和链接排序运算符:
trades = trades.filter(trade => !!trade.fields.orderCloseTime)
.sort(trades_sort);
你的JSON格式一开始就不是有效的。
trades
不应该是一个对象数组吗?既然你提到你是这方面的新手,请注意,当你使用trades
时,你已经不再处理JSON了。JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么就不是JSON。所以你没有“JSON对象”,你只有一个对象。其中(正如Terry指出的),可能包含一个对象数组…?由于json引用错误,我编辑了我的初始问题。对,对象trades
包含一个对象数组。您的JSON格式一开始就无效。trades
不应该是一个对象数组吗?既然你提到你是这方面的新手,请注意,当你使用trades
时,你已经不再处理JSON了。JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么就不是JSON。所以你没有“JSON对象”,你只有一个对象。其中(正如Terry指出的),可能包含一个对象数组…?由于json引用错误,我编辑了我的初始问题。对,对象交易
包含一个对象数组。这就是我要找的,谢谢!关于你的回答,我有一个问题。换行符是有效的JS编码样式,还是仅仅用于在这个答案中可视化丁格尔步骤?只是好奇。。再次感谢。换行符有效。这是我要找的,谢谢!关于你的回答,我有一个问题。换行符是有效的JS编码样式,还是仅仅用于在这个答案中可视化丁格尔步骤?只是好奇。。再次感谢。换行符是有效的样式