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 : exprIfFalseternary 运算符。

目前我正在 return 在 exprIfFalse 的情况下处理 { } 的空对象。

我怎么能return在exprIfFalse的情况下什么都没有呢?我的意思是,我什么都不想要。我的意思是没有数组元素。

为什么你不能 return 一个空数组,无论如何 Array.flat 都会从最终代码中删除那些空数组。在您的情况下,数组不是空的 [],它是一个包含两个空对象的数组 [{}, {}],它将在 Array.flat[ 之后的最终输出中产生两个空对象 {}, {} =19=]

你必须 return 来自 flatMap 的东西。如果你return什么都没有,相应的节点将被添加为undefinedArray.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());