nodejs访问字典中不确定是否存在的元素

遇到的问题

在使用nodejs访问字典或列表内嵌套的字典或列表的某个内容的时候,对于其中某个键值对是否存在不能确定,直接进行访问会产生报错

比如,现有如下一个列表,列表内有三个字典。当访问列表第三项的键 'v' 的内容时,如下代码可以正常输出

var ls = [{'v':1}, {'v':2}, {'v':3}]
console.log(ls[2]['v'])    // [OUT]: 3

当访问列表第四个元素(假定是字典)的键 'v' 的时候会直接抛出如下错误信息

var ls = [{'v':1}, {'v':2}, {'v':3}]
console.log(ls[3]['v'])

// [OUT]: TypeError: Cannot read property 'v' of undefined

当对一些不确定是否存在的键值对的内容进行访问的时候,可以通过使用短路判断来进行处理,如下。原理是进行第一个判断的时候先确认是否存在该键值对,如果不存在,由于后面是与运算,所以没有比较进行后面的条件表达式的判断,这时候会直接结束判断,不会触发后面的条件表达式的报错。

var ls = [{ 'v': 1 },{ 'v': 2 },{ 'v': 3 }]

if (ls[2] != undefined && ls[2]['v'] == 3) {
    console.log(ls[2]['v'])
}
else {
    console.log(`ls[2] is undefined`)
}

if (ls[3] != undefined && ls[3]['v'] == 4) {
    console.log(ls[3]['v'])
}
else {
    console.log(`ls[3] is undefined`)
}

// [OUT]: 3
//        ls[3] is undefined

但是使用这种方法过于繁琐,也不够美观(反正我不喜欢)。实际上存在一种更加便捷的方式实现我们的需求的效果。

var ls = [{ 'v': 1 },{ 'v': 2 },{ 'v': 3 }]

console.log(ls[2]['v'])
console.log(ls[3]?.v)

// [OUT]: 3
//        undefined

如上代码,通过对不确定的元素使用`?.`来访问它的内容,当键值对不存在的时候,会直接返回undefined而不是出现报错

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值