Javascript 如何过滤JS对象并按日期排序?

Javascript 如何过滤JS对象并按日期排序?,javascript,Javascript,JS级别:noob 我有以下对象,其中包含约130个交易对象: { "trades": { "model": "Trades_Information" "fields": { "orderCloseTime": "2019-12-19T16:20:56", [...] }, "model": "Trades_Information" "fiel

JS级别:noob

我有以下对象,其中包含约130个
交易
对象:

{
    "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编码样式,还是仅仅用于在这个答案中可视化丁格尔步骤?只是好奇。。再次感谢。换行符是有效的样式