首页 > 解决方案 > Javascript 或 lodash:过滤具有嵌套数组值的对象数组

问题描述

我有一组用户如下(我已经缩短了它):

 [
  {
    "displayName": "Alaotra",
    "districts": [
      {
        "regions_id_region": "11",            
        "id_district": "102"
      },
      {           
        "regions_id_region": "11",            
        "id_district": "101",          
      }
    ]
  },
  {
    "displayName": "Alexandre",
    "districts": [
      {
        "regions_id_region": "42",
        "id_district": "411",           
      },
      {           
        "id_district": "409",           
        "regions_id_region": "42"
      }
    ]
  }
]

每个用户都有一个区域数组。例如,我想获得一个过滤后的用户数组,其中包含“regions_id_region”=“11”的地区。Lodash或Vanilla就可以了。我花了一整天的时间试图实现它,但没有任何成功。欢迎任何帮助。谢谢你。

标签: javascriptarraysobjectnestedlodash

解决方案


以下是如何使用过滤器:

const users = [{
    "displayName": "Alaotra",
    "districts": [{
        "regions_id_region": "11",
        "id_district": "102"
      },
      {
        "regions_id_region": "11",
        "id_district": "101",
      }
    ]
  },
  {
    "displayName": "Alexandre",
    "districts": [{
        "regions_id_region": "42",
        "id_district": "411",
      },
      {
        "id_district": "409",
        "regions_id_region": "42"
      }
    ]
  }
]

const filtered = users.filter(u => u.districts.some(d => d.regions_id_region === '11'))
console.log(filtered)


推荐阅读