javascript - 使用 filter() 后无法获取对象的属性
问题描述
我试图使用 filter() 从对象数组中分离出一个对象,然后在 React 中显示该对象的标题。
oneliner 看起来像这样:
{Object.values(articles).filter(e => e.id==36)[0].title}
现在过滤后,我得到一个大小为 1 的数组,其中包含我想要的对象:
{Object.values(articles).filter(e => e.id==36).map(e =>
console.log(e))}
输出:
> Object { id: 36, title: "Fine landskap i ny dokumentar", img:
> "/images/landscape2.jpg", date: "2019-10-31 11:49", author: "The
> Onion", ingress: "Heyo", content: "Helt fantastisk", category:
> "Kultur", rating: 2 }
我的问题是,当我尝试在过滤器函数之后添加 [0].title 时,我得到一个 TypeError 说:
TypeError: Object.values(...).filter(...)[0] 未定义
这也没有意义,因为:
{Object.values(articles).filter(e => e.id==36).length}
输出 1。
当我只用 [0] 调用它时,我得到一个合理的错误。
{Object.values(articles).filter(e => e.id==36)[0]}
输出:
错误:对象作为 React 子项无效(找到:对象与键 {id、title、img、date、author、ingress、content、category、rating})。如果您打算渲染一组子项,请改用数组。
过滤器函数显然给了我一个包含我想要的对象的数组,但我无法访问任何对象的属性。
解决方案
奇怪的是这不起作用...
你可以试试find
。它将返回您要查找的对象:
{Object.values(articles).find(a => a.id==36).title || 'fallback if article is not found'}
推荐阅读
- javascript - 使用不同的 Webgl 将属性传递给片段着色器
- algorithm - 查找数字的变化
- java - 为什么spring boot在打包(使用gradle)时不加载应用程序yml?
- r - 如何在使用 macOS 的 GitHub Actions 进行测试之前安装 X11?
- tensorflow - 我是否正确建立了我的连体网络?
- android - 安卓使用缺口
- database - codeigniter 在会话中的数据库配置中设置数据库名称
- javascript - ERR_EMPTY_RESPONSE/无法获取 node.js
- python - conda install -n base --revision 1 不清理 pypi 包
- mysql - 通过 Shell 脚本为 auth socket 插件执行 MySQL 命令