繁体   English   中英

试图获取嵌套信息但返回未定义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM