猿问

确保 es6 find 在未定义属性时不会中断

我有这个代码


const arr = [{

  id: 1,

  name: 'anything'

}, {

  id: 2,

  name: 'something'

}]


const target = [1]

我想找到目标是否有 1 并且我想要 name 属性值


我会去做的


arr.find(o => target.includes(o.id)).name

但这会打破,如果


arr.find(o => target.includes(o.id))没有name属性,它会破坏整个应用程序并抛出错误。


那么如何保证这个不会崩溃呢?我可以这样做,但它很丑


const somethingValue = arr.find(o => target.includes(o.id)) && arr.find(o => target.includes(o.id)).name

或者我必须映射以确保arr始终具有名称属性,如果arr是动态的并且南方来自外部方,我必须这样做。


还有其他方法可以解决这个问题吗?


收到一只叮咚
浏览 138回答 2
2回答

largeQ

您可以使用空对象{}和||运算符。(arr.find(o => target.includes(o.id)) || {}).name如果find()将返回undefined这样的表达式会{},并尝试获取name来自{}这undefined
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答