【问题标题】:Ternary operator return nothing三元运算符不返回任何内容
【发布时间】:2022-01-18 10:40:39
【问题描述】:

有没有办法为三元运算符不返回任何内容

const a = [ 0 ? { name : "example" } : null ]

当我打印 a = [null]

或:

const a = [ 0 && {name:"example"}]

a 将是 [false]

我预计案例 1 的 a = []

【问题讨论】:

标签: javascript conditional-operator


【解决方案1】:

你可以传播一个(空)数组。

console.log([...(0 ? [{ name : "example" }] : [])]);
console.log([...(1 ? [{ name : "example" }] : [])]);

【讨论】:

    【解决方案2】:

    没有。这是不可能的。你会得到一个值回来。

    如果你有条件地想要一个值,那么要么在数组之外做出决定,要么在之后过滤掉空值。

    例如

    const a = 0 ? [ { name: "example" } ] : [];
    

    const a = [ 0 ? { name : "example" } : null ].filter(Boolean);
    

    【讨论】:

    • 是的,我用你的第一个建议解决了这个问题,但我想知道有没有其他方法
    【解决方案3】:

    null 是 Javascript 中完全有效的数组值,undefined 也是如此。

    您可以简单地按需构造数组...

    const a = 0 ? [{ name : "example" }] : [];
    

    或者如果这是更大数组结构的一部分,请使用 splats...

    const a = [
        'a',
        ...(0 ? [{name : "example"}] : []),
        'b'
    ];
    
    console.log(a); //-> ['a', 'b']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 2021-09-09
      • 2017-03-28
      • 2020-01-25
      • 2012-12-25
      相关资源
      最近更新 更多