gpt4 book ai didi

javascript - 为什么并发展平器只返回 2 个最里面的子节点

转载 作者:行者123 更新时间:2023-12-02 17:15:57 29 4
gpt4 key购买 nike

我不明白为什么这棵树“展平器”只返回最里面的 child ,期望它应该返回展平的树。

var x = {
"Fields": {
"Id": "1",
"MasterAccountId": "",
"ParentAccountId": "",
"Name": "Name 1"
},
"Children": [{
"Fields": {
"Id": "2",
"MasterAccountId": "1",
"ParentAccountId": "1",
"Name": "Name 2"
},
"Children": [{
"Fields": {
"Id": "5",
"MasterAccountId": "1",
"ParentAccountId": "2",
"Name": "Name 5"
},
"Children": [{
"Fields": {
"Id": "6",
"MasterAccountId": "1",
"ParentAccountId": "5",
"Name": "Name 6"
}
}, {
"Fields": {
"Id": "7",
"MasterAccountId": "1",
"ParentAccountId": "5",
"Name": "Name 7"
}
}]
}]
}]
}

function recurs(n) {
console.log(n.Fields.Name);
return (n.Children != undefined ? $.map(n.Children, recurs) : n);
}

var r = recurs(x);

它返回 id 为 6、7 的元素,而 console.logs 所有 5 个元素。

http://plnkr.co/edit/LdHiR86EDBnZFAh6aAlG?p=preview

最佳答案

如果 n.Children 未定义,则您的函数仅返回 n。由于您想要一个包含所有对象的平面数组,因此您必须构建一个数组。

function recurs(n) {
var out = [];
out.push(n.Fields);
if (n.Children) {
for (var i=0, c; c = n.Children[i]; i++) {
out.push.apply(out, recurs(c));
}
}
return out;
}

关于javascript - 为什么并发展平器只返回 2 个最里面的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24428766/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com