获取JavaScript中深度嵌套对象中对象的完整路径

获取JavaScript中深度嵌套对象中对象的完整路径,javascript,ecmascript-6,Javascript,Ecmascript 6,我的源阵列如下所示: arr =[ { "dimensionId": 1, "dimensionName": "dimensionName1", "components": [ { "componentId": 1, "componentName": "componentName1", "indicators": [ { "indicatorId": 1,

我的源阵列如下所示:

    arr =[
  {
    "dimensionId": 1,
    "dimensionName": "dimensionName1",
    "components": [
      {
        "componentId": 1,
        "componentName": "componentName1",
        "indicators": [
          {
            "indicatorId": 1,
            "indicatorName": "indicatorName1"
          },
          {...}
        ]
      },
       {...}
    ]
  },
  {...}
];
{
  "dimensionId": 1,
  "dimensionName": "dimensionName1",
  "componentId": 1,
  "componentName": "componentName2",
  "indicatorId": 1,
  "indicatorName": "indicatorName3"
}
当我尝试使用.filter和.map通过'indicatorId'搜索嵌套最深的对象时,它返回如下对象:

{
            "indicatorId": 1,
            "indicatorName": "indicatorName1"
}
我需要做的是在遍历父对象的子对象时也跟踪父对象的属性。所需输出如下:

    arr =[
  {
    "dimensionId": 1,
    "dimensionName": "dimensionName1",
    "components": [
      {
        "componentId": 1,
        "componentName": "componentName1",
        "indicators": [
          {
            "indicatorId": 1,
            "indicatorName": "indicatorName1"
          },
          {...}
        ]
      },
       {...}
    ]
  },
  {...}
];
{
  "dimensionId": 1,
  "dimensionName": "dimensionName1",
  "componentId": 1,
  "componentName": "componentName2",
  "indicatorId": 1,
  "indicatorName": "indicatorName3"
}
有没有一种递归的方法?
编辑:id在整个阵列中不是唯一的

您可以在找到时循环并返回。 啊=[ { 维度ID:1, 维度名称:维度名称1, 组成部分:[ { 组件d:2, 组件名称:组件名称2, 指标:[ { 指标:3, 指标名称:指标名称3 }, { 指标:3.1, 指标名称:指标名称31 }, ] } ] }, ]; 放出={} arr.forEach{dimensionId,dimensionName,components}=>{ components.forEach{indicators,componentId,componentName}=>{ 让find=indicators.find{indicatorId}=>indicatorId==3; 如果找到{ out={dimensionId,dimensionName,componentId,componentName,…found}; 回来 } }; }
注销您可以将索引添加到相同数组中的键,并为每个嵌套数组返回一个新对象

函数getFlatarray{ 返回array.reducer,o,i=>{ 对象 恩特里索先生 .forEach[k,v]=>Object.assignr,Array.isArrayv ?getFlatv :{[[k,i].加入''']:v} ; 返回r; }, {}; } 变量数据=[{dimensionId:1,dimensionName:dimensionName1,组件:[{componentId:2,组件名称:componentName2,指示符:[{indicatorId:3,indicatorName:indicatorName3},{indicatorId:4,indicatorName:indicatorName4}},{componentId:5,组件名称:componentName5,指示符:[{indicatorId:6,indicatorName:indicatorName6},{indicatorId:7,indicatorName:indicatorName8}]}; console.loggetFlatdata;
。作为控制台包装器{max height:100%!important;top:0;}请同时添加您的方法。请说明您如何尝试搜索/遍历给定数组?如果嵌套数组中有多个项,则如何处理?此操作有效,但仅当id在整个“arr”数组中是唯一的。我已编辑该数组。