如何在地图迭代中获取特定的对象键

时间:2019-05-30 07:54:12

标签: javascript arrays json object iteration

我有一个json文件,并使用map进行了迭代,但是我有一个名称为'content'的深对象键,当我返回带有map的json数组时,我想从中获取特定键

JSON:

{
  "item": [

    {
       "title": "...",
       "link": "...",
       "content": {
        "_url": "How can I get this :D",
        ...
       }
    }

   ]
}

我的JavaScript代码:

getAllNews = async () => {
    const result = await this.getResource('item/')

    return result.map(this._transformPosts) 
    // Here I iterate my json

}

_transformPosts = (item) => {

    return {
       title: item.title, 
       link: item.link,
       image: item.content._url, 
       // and here I try get _url
       id: item.guide,

    }

}

3 个答案:

答案 0 :(得分:1)

要正确处理所有情况,请记住始终检查该属性是否确实存在:

return {
       title: item.title, 
       link: item.link,
       image: (item.content && item.content._url) ? item.content._url : '', // <-- fix here.
       id: item.guide,

    }

可能的问题是:

  • 您所在行的错字:item.conten._url,(应为content
  • item缺少content。在这种情况下,item.content._url将引发异常。像我上面所做的那样添加三元运算符将确保该属性存在,否则它将默认值设置为''。如果这不是预期的默认值,请随时进行更改。

答案 1 :(得分:0)

首先,您必须获取项目密钥和一个数组。让它遍历并获取您要获取的密钥

let jsonData = {
    "item": [
  
      {
         "title": "title",
         "link": "link",
         "content": {
          "_url": "How can I get this :D"
         }
      }
  
     ]
  }
   function getKeyFromObject(obj,key){

          return obj.item.map(each=>each.content[key])
      }
      
  const url = getKeyFromObject(jsonData,"_url");
  console.log(url);

答案 2 :(得分:0)

尝试

return {
   title: item.title, 
   link: item.link,
   image: item['content']['_url'], 
   id: item.guide,
}