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

标签 javascript reactjs ecmascript-6

我有这个代码

const arr = [{
  id: 1,
  name: 'anything'
}, {
  id: 2,
  name: 'something'
}]

const target = [1]

我想知道target是否有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 我必须这样做充满活力,南方来自外部。

还有什么办法可以解决这个问题吗?

最佳答案

您可以使用空对象{}||运算符。

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

如果 find() 将返回 undefined,则表达式的计算结果将为 {} 并尝试获取 name 来自{},它是未定义

关于javascript - 确保 es6 find 在未定义属性时不会中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56183877/

相关文章:

angularjs - 如何使用 SystemJS 将 angular TypeScript 与内部模块捆绑在一起

javascript - 为什么在新实例上调用方法?

javascript - 是否有相当于 ios 自动布局约束概念的 JavaScript 或 Web 开发库?

javascript - VueJS 数据对象是 2 个数据对象的组合

javascript - React/Node.js 应用程序中的 Facebook 评论插件仅在刷新时显示

javascript - 我应该在哪里存储我的 React 可重用组件?

reactjs - 使用 create-react-app 创建新的 react 应用程序时遇到问题

javascript - 如何浏览、编译 ES6 和缩小 NodeJS 应用程序

javascript - Jquery 需要根据输入在下一个最近的类中显示错误消息

javascript - 在javascript中检测多个按键