获取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”数组中是唯一的。我已编辑该数组。