[英]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.