![](/img/trans.png)
[英]React JS is returning undefined when trying to access information from array
[英]Trying to get nested Information but returning undefined
我正在尝试通过执行以下操作来获取以下信息
for (let productKey in SearchResult) {
if (SearchResult.hasOwnProperty(productKey)) {
products.push({
name: SearchResult[productKey]['info']['name'],
image: SearchResult[productKey]['info']['image'],
url_key: SearchResult[productKey]['info']['url_key'],
productId: SearchResult[productKey]['info']['pid'],
});
结果在控制台上看起来像这样
但是我不断收到一个未定义的错误。
真的很想在这里得到一些帮助,因为我已经被困了很长时间
我相信错误是名称未定义,但在信息下的控制台中有一个名称。
尝试使用of
关键字来避免查找并添加对info
属性的检查:
for (const product of SearchResult)
if(product.info)
products.push({
name: product.info.name,
image: product.info.image,
url_key: product.info.url_key,
productId: product.info.pid
});
我可以看到第一个product.info
是从您的屏幕截图中填充的,但是您的脚本需要填充每个product.info
才能运行。
从您的屏幕截图中,您的代码看起来与您的数据结构不匹配。
在此循环中,您将从 searchResult 中的第一个键开始:0。searchResult[0] 具有属性 93493,但没有属性“信息”。 因此,当您尝试从中获取子属性时,您不能,因为 searchResult[0]['info'] 是未定义的。 有一个 searchResult[0][93493]['info'],但这不是你告诉它返回的。
您需要将其包装在另一个循环中:
for (let idx in SearchResult) {
if (SearchResult.hasOwnProperty(idx)) {
for (let propertyKey in SearchResult[idx]) {
products.push({
name: SearchResult[idx][productKey]['info']['name'],
image: SearchResult[idx][productKey]['info']['image'],
url_key: SearchResult[idx][productKey]['info']['url_key'],
productId: SearchResult[idx][productKey]['info']['pid'],
});
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.