繁体   English   中英

为什么过滤器在过滤我需要的值后返回一个空数组?

[英]Why is Filter returning an empty array after filtering the values I need?

我正在尝试对一组对象执行一些平面映射和过滤,但是,我不确定为什么我的最终结果 - 过滤后,仍然显示相同数量的对象,其中一些对象具有events属性一个空数组。

Object 处理(res)变量:

[
    {
        logs: [
                {
                    events: [
                                {
                                    "type": "unbond",
                                    ...
                                },
                                {
                                    "type": "delegate",
                                    ...
                                },
                                {
                                    "type": "someOther",
                                    ...
                                },
                                {
                                    "type": "withdraw_rewards",
                                    ...
                                },
                                {
                                    "type" : "someOtherOther",
                                    ...
                                },
                                ...
                            ]
                }

        timestamp: "someDate"
    },
        {
        logs: [
                {
                    events: [
                                {
                                    "type": "withdraw_commission",
                                    ...
                                },
                                {
                                    "type": "someOtherOtherOther",
                                    ...
                                },
                                {
                                    "type": "someOther",
                                    ...
                                },
                                {
                                    "type": "withdraw_rewards",
                                    ...
                                },
                                {
                                    "type" : "someOtherOther",
                                    ...
                                },
                                ...
                            ]
                }

        timestamp: "someDate"
    },
    ...
]

结果(在第 5 项之后,everything 在event_logs道具中有一个空数组:

[
    {
        timestamp: "somedate1",
        event_logs: [
                        {
                            ...
                        }
                    ]
    },
        {
        timestamp: "somedate2",
        event_logs: [
                        {
                            ...
                        }
                    ]
    },
        {
        timestamp: "somedate3",
        event_logs: []              //empty
    },
    ...

]

这是我用来执行平面映射和过滤的代码:

const evnts = res.data.tx_responses.map(({timestamp, logs}) => ({
    timestamp,
    event_logs: logs.flatMap(log => log.events)
                    .filter(events => events.type === "delegate" || events.type === "withdraw_rewards" || events.type === "withdraw_commission" || events.type === "unbond")
}));
return evnts;

如何使用空的event_logs道具摆脱这些对象?

您正在创建一个 map,但没有在结果中过滤它。 如果要删除其中没有任何 event_log 的事件,可以如图所示过滤它们。

    const evnts = res.data.tx_responses.map(({timestamp, logs}) => ({
            timestamp,
            event_logs: logs.flatMap(log => log.events)
                            .filter(events => events.type === "delegate" || events.type === "withdraw_rewards" || events.type === "withdraw_commission" || events.type === "unbond")
        }));
//filter here
        evnts = evnts.filter(event => event.event_logs.length > 0 )
        return evnts;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM