Javascript 如何访问js对象属性?
我不知道如何在JS中获取对象属性。我正在从firebase获取值,我想按其id筛选结果:Javascript 如何访问js对象属性?,javascript,reactjs,Javascript,Reactjs,我不知道如何在JS中获取对象属性。我正在从firebase获取值,我想按其id筛选结果: //id is from query params (selecting 1 item from view) const snippet = snippets.filter(snips => { if(snips.id == id) return snips; }) 如果在这些行之后输入console.log,我会得到以下结果: 因此,我尝试使用snippet[0]获取属性,它返回
//id is from query params (selecting 1 item from view)
const snippet = snippets.filter(snips => {
if(snips.id == id) return snips;
})
如果在这些行之后输入console.log,我会得到以下结果:
因此,我尝试使用snippet[0]
获取属性,它返回以下内容:
但如果我尝试获取以下属性:
console.log(obj['id']);
//console.log(obj.title); - tried this as well
它返回:
输入数据:
这不是array::filter函数的工作方式。它迭代数组,如果元素应该在结果数组中返回,则回调函数返回布尔值true/false
const snippet = snippets.filter(snips => snips.id == id)
问题
无法读取未定义的属性“title”
这意味着在尝试访问任何属性时,代码段[0]
当前未定义
代码段[0]。title
,根title
属性也不存在于其他控制台日志中
解决方案
您的代码段(可能)是由1(或0)个元素组成的数组,因此为了访问嵌套在数据属性中的标题
snippet[0].data.title
如果数组为空或有一个元素没有数据属性,请使用可选的chaining或guard子句检查访问
snippet[0]?.data?.title
或
查看您的请求,您需要首先输入数据
console.log(obj[0].data.content)请提供一个。您可能会遇到异步代码问题。另外,请阅读如何正确使用Array#filter
。获得了相同的输出。@silent\u coder14您何时尝试在代码中访问它?有时,在控制台日志实际打印时,对象会被数据和属性“定义”/“填充”。您是否可以更新您的问题以包含一个代码示例,即对象访问的使用方式和位置?我认为它现在可以使用:console.log(obj?.data?.title);非常感谢。这很让人困惑,因为我最初得到的是值,但过了一段时间后就丢失了。请您添加更多代码,以便我可以在编辑器中尝试。thxthank you@Manuel,它现在似乎在工作:console.log(obj?.data?.title);
snippet[0]?.data?.title
snippet[0] && snippet[0].data && snippet[0].data.title