首页 > 解决方案 > 在不停止 Node.js 的情况下测试对象是否未定义

问题描述

如果这是一个重复的问题,我很抱歉,但是通过谷歌搜索,我还没有找到适合我的解决方案

我正在编写一个从splatoon2.ink的公共 API 解析 JSON 的程序。到目前为止一切都很好。但是直到现在我还无法解决一件事

JSON 中有一个属性可以告诉您当前计划中可用的武器类型。我可以通过告诉它查看来轻松调用它:

body.details[0].weapons[0].weapon.name

但是,在某些条件下,有一些特殊的武器。但是,API 不仅更改名称,还将对象更改为:

body.details[0].weapons[0].coop_special_weapon.name

因此,每次我的程序调用该weapon.name对象时,Node.js 都会停止说该对象是undefined

所以我写了一个简单的 if 语句,如下所示:

if (coopSchedule.details[0].weapons[0].weapon.name == undefined){
      var currentWeapon1 = coopSchedule.details[0].weapons[0].coop_special_weapon.name;
} else {
      var currentWeapon1 = coopSchedule.details[0].weapons[0].weapon.name;}

但是,Node.js 一直停止,因为它说weapon.name对象未定义。这是真的,它是未定义的。但我希望 if 语句继续执行,以便它可以coop_special_weapon.name取而代之的是对象的属性。

那么如何在不使 node.js 崩溃的情况下检测到未定义的对象呢?

非常感谢你!

标签: javascriptjsonnode.jsundefined

解决方案


weaponundefined所以name失败了。您可以通过使用短路评估来稍微缩短代码:

const weapons = coopSchedule.details[0].weapons[0];
const weapon = (weapons.weapon || weapons.coop_special_weapon).name;

推荐阅读