我试图从嵌套的JSON中过滤掉一些具有多个父子项的特定数据。这是我的json,
[{
"id": "111111",
"name": "Parent",
"steps": [{
"id": "22222",
"name": "Child",
"steps": [{
"id": "333333",
"name": "Child -Child",
"steps": [{
"id": "444444",
"name": "Child - Child - Child",
"steps": [{
"id": "5555",
"name": "Child - Child - Child - Child"
}, {
"id": "522e9327-0747-4080-b6e2-d57e726b5b26",
"name": "Child - Child - Child - Child 2"
}],
}],
}],
}],
}]
我在这里尝试做的是我必须得到一些特定的数据,这些数据都在这个嵌套的json中。对于Ex:我需要像["parent","Child","Child-Child"...etc ]
这样的输出。所以我使用java脚本使用map函数,但输出不同,就像这一个["ParentChildChildChild"]
(没有空格)。如果输出是字符串只是意味着我可以放“\ n”并将它们分开但有时它们在数字中所以问题会发生。这是我试过的代码,
var myReturnedValues = mainSteps.map(x => [
x.steps.map(y => y.name +
y.steps.map(z => z.name +
z.steps.map(a => a.name + a.steps.map(b => b.name))
)
)
]);
有人可以帮助/澄清我。
答案 0 :(得分:2)
为了最有效地实现这一目标,你需要最有效地实现这一目标为了最有效地实现这一点,你需要使用递归使用递归使用递归。
使用此模式意味着无论您拥有多少级别的嵌套对象,都将始终填充数组。试试这个:
\|*.+?
答案 1 :(得分:1)
您可以使用javascript地图功能&递归
var jsonArray = [{
"id": "111111",
"name": "Parent",
"steps": [{
"id": "22222",
"name": "Child",
"steps": [{
"id": "333333",
"name": "Child -Child",
"steps": [{
"id": "444444",
"name": "Child - Child - Child",
"steps": [{
"id": "5555",
"name": "Child - Child - Child - Child"
}, {
"id": "522e9327-0747-4080-b6e2-d57e726b5b26",
"name": "Child - Child - Child - Child 2"
}],
}],
}],
}],
}]
var namesArray = [];
var recur = function(obj) {
namesArray.push(obj.name);
if(obj.steps) {
obj.steps.map(recur);
}
}
jsonArray.map(recur);
console.log(namesArray);
答案 2 :(得分:1)
您也可以尝试
function getObjectKeyValues(obj, objKey) {
var result = [];
JSON.stringify(obj, function(key, value) {
if (key === objKey) {
result.push(value)
}
return;
});
return result;
}
检查: