javascript - 在不停止 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 崩溃的情况下检测到未定义的对象呢?
非常感谢你!
解决方案
是weapon
,undefined
所以name
失败了。您可以通过使用短路评估来稍微缩短代码:
const weapons = coopSchedule.details[0].weapons[0];
const weapon = (weapons.weapon || weapons.coop_special_weapon).name;
推荐阅读
- azure-cognitive-search - Azure 搜索解释功能
- ruby-on-rails - 设置接受的最大内容长度
- ruby-on-rails - Rails 可选验证模棱两可
- javascript - 需要一个javascript解决方案来完全隐藏不同屏幕设备中的一部分代码
- javascript - 高亮mysql根据用户高亮动态生成的表并永久存储信息
- html - 如何在标题中编码徽标和公司名称
- python - 无法连接 Keras Lambda 层
- python - 迭代字典键值并使用已知计数进行平均
- angularjs - ng-change 后触发的 Angular 事件
- c# - 如何继承MenuStrip?