使用Javascript或Lodash过滤嵌套数组

时间:2020-07-06 18:35:36

标签: javascript lodash

我正在尝试过滤仅包含"isFavorite": true的项目。

temp1 = {
  "Name": "Toronto",
  "Area": [ 
    {
      "Title": "Roofing",
      "Details": {
        "Reports": 52,
        "Projects": [ 
          {
            "Name": "ITEM A",
            "isFavorite": true
          }, 
          {
            "Name": "ITEM B",
            "isFavorite": false
          }, 
          {
            "Name": "ITEM C",
            "isFavorite": true
          } 
        ]
      }
    } 
  ]
}

我尝试使用lodash过滤器函数,但数组返回了所有内容。

_.filter(temp1, {Area: [{Projects: [{isFavorite: true}] }]});

我尝试使用常规javascript,但仍不只返回"isFavorite": true

的项目。
this.branchSummaries.filter(d => d.Area.some(p => p.Projects.some(f => f.isFavorite === true)));

1 个答案:

答案 0 :(得分:2)

您需要首先在每个Areas中的过滤器projects之后遍历Area 就像这样

 let data =  {
      "Name": "Toronto",
      "Area": [
        {
          "Title": "Roofing",
          "Details": {
            "Reports": 52,
            "Projects": [
              {
                "Name": "ITEM A",
                "isFavorite": true
              },
              {
                "Name": "ITEM B",
                "isFavorite": false
              },
              {
                "Name": "ITEM C",
                "isFavorite": true
              }
            ]
          }
        }
      ]
    }

data.Area.forEach(area => {
  area.Details.Projects = area.Details.Projects.filter(project => project.isFavorite)
})
console.log(data)

相关问题