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

标签 javascript

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,
                [...]
        },

        [...]

}

现在我尝试定义一个函数,该函数拼接所有包含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 中的字段不应该重复,你只有 2 个键 “字段”和“模型”

所以根据你的信息只会加载两个元素

主要问题是json不正确

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

trades.filter(v => v.fields.orderCloseTime)

有了排序功能,一切都是正确的

关于javascript - 如何过滤 JS 对象并按日期排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59430328/

相关文章:

javascript - 让元素在 CSS 动画延迟期间保持隐藏状态

javascript - jQuery 下拉列表不触发删除按钮

javascript - 如何使用 Passport.js 将数据从 React 客户端传递到 Oauth2.0 Google 策略流程

javascript - div 元素提供了哪些不在section 元素中的功能?

javascript - 在 Nodejs 中解析 gzip 流

javascript - 访问 li ul 中的 href 元素

Javascript Discord Bot 在运行时给出代码引用错误

javascript - 在 ES6 中使用对象或数组解构赋值时如何混合使用 const 和 let?

javascript - 使用外部javascript,控制f4player中的播放、停止、暂停等

javascript - 如何在 Javascript 中修改计算的字体大小