【问题标题】:How to use ternary operator when you structure object?构造对象时如何使用三元运算符?
【发布时间】:2020-01-27 04:56:35
【问题描述】:

我正在根据数据将对象推送到数组,因此属性正在动态变化,试图映射数据中的属性值,这里有两个选项 data 可以是 data.type.elementType.namedata.type.name 如何使用三元运算符分配价值?

main.js

if (item.type.declaration.signatures.length !== 0) {
  var responseData = item.type.declaration.signatures[0].parameters[0].type.declaration.children;
  for (var data of responseData) {
    if (data.name === "details") {
      var detailsName = name === data.type.elementType.name ? data.type.elementType.name : data.type.name;
      interfaceModules.push({ id: "details", name: detailsName });
    }
  }
}

【问题讨论】:

  • data.type.elementType.name ? 很可能是data.type.elementType ?。如果 elementType 不存在,尝试将其 .name 关闭将是空指针异常
  • 什么是name 三元比较name === data.type.elementType.name ?

标签: javascript jquery for-loop conditional-statements


【解决方案1】:

如果您想使用三元组,我相信您需要将.name 从条件中去掉,以避免尝试访问空元素上的属性时出现异常。

var detailsName = name === data.type.elementType ? data.type.elementType.name : data.type.name;

另一种选择是使用 elementType(如果存在),否则使用类型,然后获取名称。

var detailsName = name === ( data.type.elementType || data.type ).name;

【讨论】:

  • 实际上当数据以data.type.elementType.name 出现时,它的抛出未定义detailsName
  • 你用的是哪个版本?
  • 答案中的第一个版本
猜你喜欢
  • 2020-07-19
  • 1970-01-01
  • 2020-07-02
  • 2020-12-19
  • 1970-01-01
  • 2021-10-10
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多