【问题标题】:JS: Null-Safe Array ConcatJS:空安全数组连接
【发布时间】:2019-01-30 05:12:38
【问题描述】:

给定:

var a = [1, 2, 3]
var b = null

我需要:

var c = [...a, ...b]

.. 但是当 ab 为 null 时,这不起作用。所以在这个例子中b不应该被添加,导致c = [1, 2, 3]。如果ab都为null(或未定义),则结果应为[]。

有没有什么简写方式可以避免写两个if-statements?

【问题讨论】:

    标签: javascript typescript ecmascript-6


    【解决方案1】:

    您可以使用|| operator

    var a = [1, 2, 3]
    var b = null
    
    var c = [...a||[], ...b||[]]
    
    console.log(c)

    【讨论】:

    • @HondaGuy 不完全确定您想对该评论说什么。如果b 为空,则不会将其放在c 中,因为...b||[] 的计算结果为...[],这将导致没有元素被添加到c。那么关于 OP 的问题,您的链接答案如何更好?
    • 我的错误。在分析为什么我发现其他解决方案在导致我来到这里的情况下更有用时,我犯了一个错误。已删除评论。对不起。
    【解决方案2】:
    var c = [...(a || []), ...(b || [])]
    

    这样,如果任何数组为空或未定义,它将被一个空数组替换

    【讨论】:

      【解决方案3】:

      您可以像这样使用三元运算符验证和连接数组

          const a = [1,2,3,4,5];
          const b =  null;
          const c =  [6,7,8,9];
          const final = [...a ? a :[],...b ? b : [],...c ? c : []];
          console.log(final)
      

      Click here for code snippet

      【讨论】:

        【解决方案4】:

        您可以使用过滤器

        var a = [1, 2]
        var b = null
        var c = [3, null, 4]
        
        var d = []
        d.concat(a,b,c).filter(item => item !== null) // [1, 2, 3, 4]
        
        console.log("Array", d)
        

        【讨论】:

          猜你喜欢
          • 2013-02-05
          • 2021-11-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多