Return 根据 if 条件,`Array.flatMap()` 中没有元素
Return no element from `Array.flatMap()` by if condition
我有这个代码:
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 运算符。
目前我正在 return 在 exprIfFalse
的情况下处理 { }
的空对象。
我怎么能return在exprIfFalse
的情况下什么都没有呢?我的意思是,我什么都不想要。我的意思是没有数组元素。
为什么你不能 return 一个空数组,无论如何 Array.flat
都会从最终代码中删除那些空数组。在您的情况下,数组不是空的 []
,它是一个包含两个空对象的数组 [{}, {}]
,它将在 Array.flat
[ 之后的最终输出中产生两个空对象 {}, {}
=19=]
你必须 return 来自 flatMap
的东西。如果你return什么都没有,相应的节点将被添加为undefined
。 Array.flat
不会删除它。最好的选择是 return 一个空数组,如下所示。
伪代码
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());
我有这个代码:
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 运算符。
目前我正在 return 在 exprIfFalse
的情况下处理 { }
的空对象。
我怎么能return在exprIfFalse
的情况下什么都没有呢?我的意思是,我什么都不想要。我的意思是没有数组元素。
为什么你不能 return 一个空数组,无论如何 Array.flat
都会从最终代码中删除那些空数组。在您的情况下,数组不是空的 []
,它是一个包含两个空对象的数组 [{}, {}]
,它将在 Array.flat
[ 之后的最终输出中产生两个空对象 {}, {}
=19=]
你必须 return 来自 flatMap
的东西。如果你return什么都没有,相应的节点将被添加为undefined
。 Array.flat
不会删除它。最好的选择是 return 一个空数组,如下所示。
伪代码
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());