通过 if 条件从 `Array.flatMap()` 中不返回任何元素
Posted
技术标签:
【中文标题】通过 if 条件从 `Array.flatMap()` 中不返回任何元素【英文标题】:Return no element from `Array.flatMap()` by if condition 【发布时间】:2021-12-29 00:18:33 【问题描述】:我有这个代码:
const myFunc = function (t)
return myArray.flatMap(clip =>
(t < clip.start || t < clip.end) ? // Valid objects are returned in this *if* condition
[
time: clip.start ,
time: clip.end
] : // how to return nothing in this *else* condition. Absolutely nothing?
[
,
]
)
以上代码使用了condition ? exprIfTrue : exprIfFalse
的ternary 运算符。
目前我在exprIfFalse
的情况下返回
的空对象。
exprIfFalse
的情况下如何不返回任何内容?我的意思是,我什么都不想要。我的意思是没有数组元素。
【问题讨论】:
为什么要用空对象设置空对象?那将是你的问题 【参考方案1】:你为什么不能只返回一个空数组,Array.flat
将如何从最终代码中删除这些空数组。在您的情况下,数组不是空的[]
,它是一个包含两个空对象[, ]
的数组,它将在Array.flat
之后的最终输出中产生两个空对象,
你必须从flatMap
返回一些东西。如果不返回任何内容,则相应的节点将添加为undefined
。 Array.flat
不会删除它。最好的选择是返回一个空数组,如下所示。
伪代码
const myArray = [1, 2, 3, 4, 5];
const myFunc = function (t)
return myArray.flatMap(clip =>
(clip % 2 === 0) ? // Valid objects are returned in this *if* condition
[
value: clip ,
value: clip
] : // how to return nothing in this *else* condition. Absolutely nothing?
[]
)
console.log(myFunc());
【讨论】:
以上是关于通过 if 条件从 `Array.flatMap()` 中不返回任何元素的主要内容,如果未能解决你的问题,请参考以下文章