通过 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 返回一些东西。如果不返回任何内容,则相应的节点将添加为undefinedArray.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()` 中不返回任何元素的主要内容,如果未能解决你的问题,请参考以下文章

使用if条件使用python比较密码

如何从条件中声明一个对象并使其通过函数的其余部分可用?

我如何在我从数据库中获取的 get_file_contents 中使用 if else 条件 [重复]

如何从另一个if条件中的一个if条件中获取变量的值?

条件控制

通过 if 条件时退出 foreach