Javascript ';具有嵌套对象的对象';使用ES6箭头函数

Javascript ';具有嵌套对象的对象';使用ES6箭头函数,javascript,ecmascript-6,Javascript,Ecmascript 6,如何根据'id'或'subdivisions.id'过滤下面这样的对象数组 ps:ids是唯一的,您无法找到object.id==object.subdivisions[n].id { "id": "1", "name": "South East", "subdivisions": [ { "id": "2", "name": "Berkshire" }, { "id": "3", "name": "Buckin

如何根据'id''subdivisions.id'过滤下面这样的对象数组

ps:ids是唯一的,您无法找到object.id==object.subdivisions[n].id

{
  "id": "1",
  "name": "South East",
  "subdivisions": [
    {
      "id": "2",
      "name": "Berkshire"
    },
    {
      "id": "3",
      "name": "Buckinghamshire"
    },
    {
      "id": "4",
      "name": "East Sussex"
    },
    {
      "id": "5",
      "name": "Hampshire"
    },
    {
      "id": "6",
      "name": "Isle of Wight"
    },
    {
      "id": "7",
      "name": "Kent"
    },
    {
      "id": "8",
      "name": "Oxfordshire"
    },
    {
      "id": "9",
      "name": "Surrey"
    },
    {
      "id": "10",
      "name": "West Sussex"
    }
  ]
}
得到一个简单的对象,如下所示:

{
  "id": "10",
  "name": "West Sussex"
}
编辑

以下是完整阵列:

[
  {
    "id": "1",
    "name": "South East",
    "subdivisions": [
      {
        "id": "2",
        "name": "Berkshire",
        "__typename": "Region"
      },
      {
        "id": "3",
        "name": "Buckinghamshire",
        "__typename": "Region"
      },
      {
        "id": "4",
        "name": "East Sussex",
        "__typename": "Region"
      },
      {
        "id": "5",
        "name": "Hampshire",
        "__typename": "Region"
      },
      {
        "id": "6",
        "name": "Isle of Wight",
        "__typename": "Region"
      },
      {
        "id": "7",
        "name": "Kent",
        "__typename": "Region"
      },
      {
        "id": "8",
        "name": "Oxfordshire",
        "__typename": "Region"
      },
      {
        "id": "9",
        "name": "Surrey",
        "__typename": "Region"
      },
      {
        "id": "10",
        "name": "West Sussex",
        "__typename": "Region"
      }
    ],
    "__typename": "Region"
  },
  {
    "id": "11",
    "name": "London",
    "subdivisions": [
      {
        "id": "12",
        "name": "City of London",
        "__typename": "Region"
      },
      {
        "id": "13",
        "name": "City of Westminster",
        "__typename": "Region"
      },
      {
        "id": "14",
        "name": "Kensington and Chelsea",
        "__typename": "Region"
      },
      {
        "id": "15",
        "name": "Hammersmith and Fulham",
        "__typename": "Region"
      },
      {
        "id": "16",
        "name": "Wandsworth",
        "__typename": "Region"
      },
      {
        "id": "17",
        "name": "Lambeth",
        "__typename": "Region"
      },
      {
        "id": "18",
        "name": "Southwark",
        "__typename": "Region"
      },
      {
        "id": "19",
        "name": "Tower Hamlets",
        "__typename": "Region"
      },
      {
        "id": "20",
        "name": "Hackney",
        "__typename": "Region"
      },
      {
        "id": "21",
        "name": "Islington",
        "__typename": "Region"
      },
      {
        "id": "22",
        "name": "Camden",
        "__typename": "Region"
      },
      {
        "id": "23",
        "name": "Brent",
        "__typename": "Region"
      },
      {
        "id": "24",
        "name": "Ealing",
        "__typename": "Region"
      },
      {
        "id": "25",
        "name": "Hounslow",
        "__typename": "Region"
      },
      {
        "id": "26",
        "name": "Richmond",
        "__typename": "Region"
      },
      {
        "id": "27",
        "name": "Kingston",
        "__typename": "Region"
      },
      {
        "id": "28",
        "name": "Merton",
        "__typename": "Region"
      },
      {
        "id": "29",
        "name": "Sutton",
        "__typename": "Region"
      },
      {
        "id": "30",
        "name": "Croydon",
        "__typename": "Region"
      },
      {
        "id": "31",
        "name": "Bromley",
        "__typename": "Region"
      },
      {
        "id": "32",
        "name": "Lewisham",
        "__typename": "Region"
      },
      {
        "id": "33",
        "name": "Greenwich",
        "__typename": "Region"
      },
      {
        "id": "34",
        "name": "Bexley",
        "__typename": "Region"
      },
      {
        "id": "35",
        "name": "Havering",
        "__typename": "Region"
      },
      {
        "id": "36",
        "name": "Barking and Dagenham",
        "__typename": "Region"
      },
      {
        "id": "37",
        "name": "Redbridge",
        "__typename": "Region"
      },
      {
        "id": "38",
        "name": "Newham",
        "__typename": "Region"
      },
      {
        "id": "39",
        "name": "Waltham Forest",
        "__typename": "Region"
      },
      {
        "id": "40",
        "name": "Haringey",
        "__typename": "Region"
      },
      {
        "id": "41",
        "name": "Enfield",
        "__typename": "Region"
      },
      {
        "id": "42",
        "name": "Barnet",
        "__typename": "Region"
      },
      {
        "id": "43",
        "name": "Harrow",
        "__typename": "Region"
      },
      {
        "id": "44",
        "name": "Hillingdon",
        "__typename": "Region"
      }
    ],
    "__typename": "Region"
  },
  {
    "id": "45",
    "name": "North West England",
    "subdivisions": [
      {
        "id": "46",
        "name": "Cheshire",
        "__typename": "Region"
      },
      {
        "id": "47",
        "name": "Cumbria",
        "__typename": "Region"
      },
      {
        "id": "48",
        "name": "Greater Manchester",
        "__typename": "Region"
      },
      {
        "id": "49",
        "name": "Lancashire",
        "__typename": "Region"
      },
      {
        "id": "50",
        "name": "Merseyside",
        "__typename": "Region"
      }
    ],
    "__typename": "Region"
  },
  {
    "id": "51",
    "name": "East of England",
    "subdivisions": [
      {
        "id": "52",
        "name": "East Anglia",
        "__typename": "Region"
      },
      {
        "id": "53",
        "name": "Bedfordshire and Hertfordshire",
        "__typename": "Region"
      },
      {
        "id": "54",
        "name": "Essex",
        "__typename": "Region"
      }
    ],
    "__typename": "Region"
  },
  {
    "id": "55",
    "name": "West Midlands",
    "subdivisions": [
      {
        "id": "56",
        "name": "Herefordshire, Worcestershire and Warwickshire",
        "__typename": "Region"
      },
      {
        "id": "57",
        "name": "Shropshire and Staffordshire",
        "__typename": "Region"
      },
      {
        "id": "58",
        "name": "West Midlands",
        "__typename": "Region"
      }
    ],
    "__typename": "Region"
  },
  {
    "id": "59",
    "name": "South West England",
    "subdivisions": [
      {
        "id": "60",
        "name": "Gloucestershire, Wiltshire and Bristol/Bath area",
        "__typename": "Region"
      },
      {
        "id": "61",
        "name": "Dorset and Somerset",
        "__typename": "Region"
      },
      {
        "id": "62",
        "name": "Cornwall and Isles of Scilly",
        "__typename": "Region"
      },
      {
        "id": "63",
        "name": "Devon",
        "__typename": "Region"
      }
    ],
    "__typename": "Region"
  },
  {
    "id": "64",
    "name": "Yorkshire and the Humber",
    "subdivisions": [
      {
        "id": "65",
        "name": "East Riding and North Lincolnshire",
        "__typename": "Region"
      },
      {
        "id": "66",
        "name": "North Yorkshire",
        "__typename": "Region"
      },
      {
        "id": "67",
        "name": "South Yorkshire",
        "__typename": "Region"
      },
      {
        "id": "68",
        "name": "West Yorkshire",
        "__typename": "Region"
      }
    ],
    "__typename": "Region"
  },
  {
    "id": "69",
    "name": "East Midlands",
    "subdivisions": [
      {
        "id": "70",
        "name": "Derbyshire and Nottinghamshire",
        "__typename": "Region"
      },
      {
        "id": "71",
        "name": "Leicestershire, Rutland and Northamptonshire",
        "__typename": "Region"
      },
      {
        "id": "72",
        "name": "Lincolnshire",
        "__typename": "Region"
      }
    ],
    "__typename": "Region"
  },
  {
    "id": "73",
    "name": "North East England",
    "subdivisions": [
      {
        "id": "74",
        "name": "Tees Valley and County Durham",
        "__typename": "Region"
      },
      {
        "id": "75",
        "name": "Northumberland and Tyne and Wear",
        "__typename": "Region"
      }
    ],
    "__typename": "Region"
  }
]
你可以用它

要在
子分区外部或内部进行搜索,可以使用以下命令

函数查找(数据,id){
var result=data.find(o=>o.id==id);
如果(!结果){
一些(o=>result=o.subsections.find(s=>s.id==id));
}
返回结果;
}
var数据=[{id:“1”,名称:“东南”,细分:[{id:“2”,名称:“伯克希尔”,类型名称:“地区”},{id:“3”,名称:“白金汉郡”,类型名称:“地区”},{id:“4”,名称:“东苏塞克斯”,类型名称:“地区”},{id:“5”,名称:“汉普郡”,类型名称:“地区”},{id:“6”,名称:“怀特岛”,类型名称:“地区”},{id:“7”,名字:“肯特”,名字:“地区”},{id:“8”,名字:“牛津郡”,名字:“地区”},{id:“9”,名字:“萨里”,名字:“地区”},{id:“10”,名字:“西苏塞克斯”,名字:“地区”},{id:“11”,名字:“伦敦”,分区:[id:“12”,名字:“伦敦市”,名字:“地区”},{id:“13”,姓名:“威斯敏斯特市”,“地区”},{id:“14”,姓名:“肯辛顿和切尔西”,“地区”},{id:“15”,姓名:“哈默史密斯和富勒姆”,“地区”},{id:“16”,姓名:“旺德斯沃思”,“地区”},{id:“17”,姓名:“兰贝思”,“地区”},{id:“18”,姓名:“南华克”,“地区”“地区”}、{id:“19”、姓名:“塔楼村庄”}、{id:“20”、姓名:“哈克尼”、{id:“地区”}、{id:“21”、姓名:“伊斯林顿”、{id:“地区”}、{id:“22”、姓名:“卡姆登”、{id:“地区”}、{id:“23”、姓名:“布伦特”、{id:“地区”}、{id:“24”、姓名:“伊林”、{UU类型名称:“地区”}、{id:“25,姓名:“Hounslow”,姓名:“Region”},{id:“26”,姓名:“Richmond”,姓名:“Region”},{id:“27”,姓名:“Kingston”,姓名:“Region”},{id:“28”,姓名:“Merton”,姓名:“Region”},{id:“29”,姓名:“Sutton”,姓名:“Region”},{id:“30”,姓名:“Croydon”,姓名:“Region”},{id:“31”,姓名:“Bromley”,{id:“区域”},{id:“38”,名称:“纽厄姆”,{id:“区域”},{id:“39”,名称:“沃尔瑟姆森林”,{id:“区域”},{id:“40”,名称:“哈林盖”,{id:“区域”},{id:“41”,名称:“恩菲尔德”,{UU类型名称:“区域”},{id:“42”,名称:“巴内特”,{id:“43”,名称:“哈罗”,{UU类型名称:“区域”},{id:“44”,姓名:“希尔林顿”,“地区”},{id:“45”,姓名:“英格兰西北部”,分部:[{id:“46”,姓名:“柴郡”,“地区”},{id:“47”,姓名:“坎布里亚”,“地区”},{id:“48”,姓名:“大曼彻斯特”,“地区”},{id:“49”,姓名:“兰开夏郡”,{id:“50”,姓名:“默西塞德”,“地区”},{id:“51”,姓名:“英格兰东部”,分部:[{id:“52”,姓名:“东安格利亚”,“地区”},{id:“53”,姓名:“贝德福德郡和赫特福德郡”,“地区”},{id:“54”,姓名:“埃塞克斯”,“地区”}],{id:“55”,名称:“西米德兰兹”,分部:[{id:“56”,名称:“赫里福德郡、伍斯特郡和沃里克郡”,{id:“地区”},{id:“57”,名称:“什罗普郡和斯塔福德郡”,{id:“58”,名称:“西米德兰兹郡”,{U类型名称:“地区”},{id:“59”,名称:“英格兰西南部”,分区:[id:“60”,名称:“格洛斯特郡、威尔特郡和布里斯托尔/巴斯地区”,[id:“61”,名称:“多塞特和萨默塞特”,[id:“地区”],[id:“62”,名称:“康沃尔和西利群岛”,[id:“63”,名称:“德文郡”,[id:“地区”],[地区”,{id:“64”,名称:“约克郡和亨伯”,细分:[id:“65”,名称:“东骑马和北林肯郡”,{id:“66”,名称:“北约克郡”,{id:“67”,名称:“南约克郡”,{U类型名称:“地区”},{id:“68”,名称:“西约克郡”,{U类型名称:“地区”},{U类型名称:“地区”},{id:“69”,名称:“东米德兰”,分区:[{id:“70”,名称:“德比郡和诺丁汉郡”,“地区”},{id:“71”,名称:“莱斯特郡、拉特兰和北安普敦郡”,{id:“72”,名称:“林肯郡”,{UU类型名称:“地区”},{id:“73”,名称:“英格兰东北部”,分区:[{id:“74”,名称:“蒂斯山谷和达勒姆县”,{id:“75”,名称:“诺森伯兰和泰恩和威尔”,{U类型名称:“区域”}],{U类型名称:“区域”}];
log(查找(数据'foo');//未定义
log(查找(数据,'66');//来自细分的项
log(查找(数据,'69');//外部数组中的项
.as控制台包装{max height:100%!important;top:0;}
您可以使用它

要在
子分区外部或内部进行搜索,可以使用以下命令

函数查找(数据,id){
var result=data.find(o=>o.id==id);
如果(!结果){
一些(o=>result=o.subsections.find(s=>s.id==id));
}
返回结果;
}
var数据=
let result =  object.subdivisions.find(sub => sub.id === id);