Javascript 如何遍历嵌套数据
我必须遍历一个大数据集来收集javascript中节点的最后一个子元素 我需要在子详细信息中找到分支代码数组。 以下是我试图获得的输出: [100012011210210131013201]Javascript 如何遍历嵌套数据,javascript,loops,iteration,lodash,Javascript,Loops,Iteration,Lodash,我必须遍历一个大数据集来收集javascript中节点的最后一个子元素 我需要在子详细信息中找到分支代码数组。 以下是我试图获得的输出: [100012011210210131013201] { “标题”:{ “第一级”:{ “详情”:{ “代码”:“01”, }, “二级”:[ { “详情”:{ “说明”:“{desc}”, }, “第三级”:{ “详情”:{ “代码”:“01”, }, “第四级”:[ { “详情”:{ “代码”:“11”, }, “分行”:{ “详情”:{ “代码”:“1
{
“标题”:{
“第一级”:{
“详情”:{
“代码”:“01”,
},
“二级”:[
{
“详情”:{
“说明”:“{desc}”,
},
“第三级”:{
“详情”:{
“代码”:“01”,
},
“第四级”:[
{
“详情”:{
“代码”:“11”,
},
“分行”:{
“详情”:{
“代码”:“1000”,
}
}
},
{
“详情”:{
“代码”:“12”,
},
“分行”:[
{
“详情”:{
“代码”:“1201”,
}
},
{
“详情”:{
“代码”:“1202”,
}
}
]
}
]
}
},
{
“详情”:{
“代码”:“100”,
},
“第三级”:[
{
“详情”:{
“代码”:“02”,
},
“第四级”:{
“详情”:{
“代码”:“21”
},
“分行”:{
“详情”:{
“代码”:“2101”,
}
}
}
},
{
“详情”:{
“代码”:“03”,
},
“第四级”:[
{
“详情”:{
“代码”:“31”,
},
“分行”:{
“详情”:{
“代码”:“3101”,
}
}
},
{
“详情”:{
“代码”:“32”,
},
“分行”:{
“详情”:{
“代码”:“3201”,
}
}
}
]
}
]
}
]
}
}
}
类似于:
function update (data, passedId, acc = []) {
if (!_.isObject(data)) {
return acc;
}
return _.reduce(_.values(data), (result, item) => {
result = _.chain(item)
.get(passedId)
.thru(val => [val])
.flatten()
.compact()
.map('Details.Code')
.thru(vals => _.concat(result, vals))
.value();
return update(item, passedId, result);
}, acc);
}
const res = update(data, 'Branch');
试试这个:
const obj={
“标题”:{
“第一级”:{
“详情”:{
“代码”:“01”,
},
“二级”:[{
“详情”:{
“说明”:“{desc}”,
},
“第三级”:{
“详情”:{
“代码”:“01”,
},
“第四级”:[{
“详情”:{
“代码”:“11”,
},
“分行”:{
“详情”:{
“代码”:“1000”,
}
}
},
{
“详情”:{
“代码”:“12”,
},
“分行”:[{
“详情”:{
“代码”:“1201”,
}
},
{
“详情”:{
“代码”:“1202”,
}
}
]
}
]
}
},
{
“详情”:{
“代码”:“100”,
},
“第三级”:[{
“详情”:{
“代码”:“02”,
},
“第四级”:{
“详情”:{
“代码”:“21”
},
“分行”:{
“详情”:{
“代码”:“2101”,
}
}
}
},
{
“详情”:{
“代码”:“03”,
},
“第四级”:[{
“详情”:{
“代码”:“31”,
},
“分行”:{
“详情”:{
“代码”:“3101”,
}
}
},
{
“详情”:{
“代码”:“32”,
},
“分行”:{
“详情”:{
“代码”:“3201”,
}
}
}
]
var res = [];
_.eachDeep(data,function(value,key){
if(key=="Branch"){
if(!_.isArray(value)){
value = [value];
}
_.each(value,function(v){
if(v.Details&&v.Details.Code){
res.push(v.Details.Code);
}
});
}
});