首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何过滤JS对象并按日期排序?

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

Stack Overflow用户
提问于 2019-12-21 03:18:15
回答 2查看 58关注 0票数 1

JS级别: noob。

我有以下对象,它包含大约130个trades对象:

代码语言:javascript
复制
{
    "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文档,我现在以这个愚蠢的尝试结束:

代码语言:javascript
复制
// 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);

当我运行代码时,它只拼接一个对象,而它应该拼接其中的六个,排序函数从字面上看根本不排序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-21 03:34:01

json把问题放在一边,就好像你展示的代码正在运行,那么它可能是一个复制错误……你只需要使用过滤器并链接你的排序操作符:

代码语言:javascript
复制
trades = trades.filter(trade => !!trade.fields.orderCloseTime)
               .sort(trades_sort);
票数 1
EN

Stack Overflow用户

发布于 2019-12-21 03:28:12

JSON中的字段不能重复,只有两个键“field”和"model“

因此,只会根据您的信息加载两个元素

主要问题是json不正确。

关于代码,我不知道什么是交易,什么是jQuery,但如果交易是对象的数组,那么你可以直接过滤它

代码语言:javascript
复制
trades.filter(v => v.fields.orderCloseTime)

使用排序函数,一切都是正确的

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59430328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档