我具有查看大量对象并将特定属性推送到新对象中的功能。我想将当前对象的级别保存为新对象的属性。
(
数据[0]、数据[1]、.. - 级别 1,
数据[0].childs[0], data[1].childs[0], .. - level2
...
)
但是我的代码中有两个交叉链接函数,我不知道该怎么做。
var data = [
{a1: 1, a2: 2, childs: [{a1: 12, a2: 13, childs: [{a1: "test114", childs:[]}]}, {a1: 114, a2: 115, childs: [{a1:1116, a2: 1117, childs: []}]}] },
{a1: 3, a2: 4, childs: [{a1: 22, a2: 23, childs: []}, {a1: 224, a2: 223, childs: [{a1:2221, a2: 2222, childs: []}]}] },
{a1: 5, a2: 6, childs: [{a1: 32, a2: 33, childs: []}] },
{a1: 7, a2: 8, childs: []}
];
var mass = [];
var newarray = [];
var level = 1;
function go() {
returnObject(data, mass);
console.log(mass);
}
function returnObject(obj, arr) {
obj.forEach(function(item) {
returnObject2(item, arr);
});
}
function returnObject2(obj, arr){
console.log(obj);
console.log(arr)
if(Array.isArray(obj)){
return
}
if (obj.childs.length > 0){
arr.push({new:obj.a1, childs: obj.childs, level: level});
level+=1;
return returnObject(obj.childs, arr);
}
else {
return arr.push({new:obj.a1, childs: [], level: level});
}
}
<button onClick=go()> go!</button>
最佳答案
不要让 level
成为全局的,传递它!
function returnObject(obj, arr, level) {
obj.forEach(function(item) {
returnObject2(item, arr, level + 1);
});
}
function returnObject2(obj, arr, level){
...
return returnObject(obj.childs, arr, level + 1);
etc
关于javascript - 在交叉链接函数中保存嵌套级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755605/