我有此代码
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
始终具有name属性,如果arr
是动态的并且南方是来自外部政党,则必须这样做。
还有其他解决方法吗?
答案 0 :(得分:1)
首先将.find
中的结果提取到一个变量中,然后检查该变量是否已定义:
const foundObject = arr.find(o => target.includes(o.id));
const somethingValue = foundObject ? foundObject.name : null;
答案 1 :(得分:1)
您可以使用空对象{}
和||
运算符。
(arr.find(o => target.includes(o.id)) || {}).name
如果find()
返回undefined
,则表达式的结果将为{}
,并尝试从name
的{{1}}获取{}
< / p>