【问题标题】:Setting object property with ternary operator使用三元运算符设置对象属性
【发布时间】:2020-07-02 03:52:00
【问题描述】:

我正在尝试使用三元运算符设置对象属性,但我看不到能够做到这一点。我收到此错误:> ',' 预期。

这是我正在使用的代码:

for(let i =0; i < res.value.length; i++ ){
          let event = res.value[i]
          events.push({ 
            eventEndDate: event.EndTime && '', 
            eventName: event.Title, 
            eventStartDate: event.StartTime && '', 
            numOfAttendees: event.RSVPId?? event.RSVPId.length :  0, //here's my issue
            eventId: event.Id
          })
        }

如果 event.RSVPId 为空,我想将 numOfAttendees 设置为 0,否则我想将其设置为该属性的长度。我在这里做错了什么?这不应该是这样写的吗?

【问题讨论】:

  • 因为您使用event.RSVPId?? 两个? 标记,尝试使用一个?
  • 一个愚蠢的错误。谢谢
  • 不用担心! :-)

标签: javascript typescript conditional-operator


【解决方案1】:
for(let i =0; i < res.value.length; i++ ){
          let event = res.value[i]
          events.push({ 
            eventEndDate: event.EndTime && '', 
            eventName: event.Title, 
            eventStartDate: event.StartTime && '', 
            numOfAttendees: event.RSVPId? event.RSVPId.length :  0, //here's my issue
            eventId: event.Id
          })
        }

你有两个 ? 而不是 1

event.RSVPId?? event.RSVPId.length : 0

应该是

event.RSVPId? event.RSVPId.length : 0

【讨论】:

  • 如果三进制不起作用且语法正确,则需要检查条件。由于 JS 的灵活性,我们倾向于让数组思考它是否像一个原始类型变量。但是你必须检查 array.length > 0
猜你喜欢
  • 2021-09-11
  • 2018-01-03
  • 2021-10-10
  • 1970-01-01
  • 2018-12-29
  • 2015-06-09
  • 2019-03-06
  • 1970-01-01
  • 2018-10-27
相关资源
最近更新 更多