【问题标题】:Simplify simple ternary expression简化简单的三元表达式
【发布时间】:2019-02-25 05:50:13
【问题描述】:

我想验证对象的未定义属性,所以我像这样使用三元组

item.subitem ? item.subitem.toString() : ''

有没有办法使用||&& 来简化这个表达式?

【问题讨论】:

  • 我通常在我的代码中的某处定义const string = value => value == null? "": String(value);,以及其他一些。然后就是string(item.subitem);
  • 这个方法不错!

标签: javascript conditional ternary-operator


【解决方案1】:

很简单:

item.subitem && item.subitem.toString() || ''

或者简单地说:

(item.subitem || '').toString()

或,

''+(item.subitem || '')

如果你可以使用可选链,那就更简单了:

item.subitem?.toString()

更多详情请参阅this post


作为@Thomas mentioned in comment,你也可以使用数组并转换为字符串:

[item.subitem].toString();

这应该清楚它是如何工作的:

[].toString(); // ''
[undefined].toString(); // ''
['foo'].toString(); // 'foo'
['foo', 'bar'].toString(); 'foo,bar'

【讨论】:

  • 第一个示例使用的字节数比问题中的代码多。
  • 是的,但我只是为了 OP 的好奇心才提供它。
  • 当我们已经在进行黑客攻击时,您知道吗:""+[item.subitem]
【解决方案2】:

是的,你可以

(item.subitem || '').toString()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多