【发布时间】:2016-10-11 08:02:33
【问题描述】:
我一直在互联网上搜索,但找不到合适的词来搜索,所以我在这里再次向你们所有 Javascript 的前辈提问。 下面的代码取自答案on these question 我真的不明白方法或功能是如何工作的。
var list = [{id: 1,title: 'home',parent: null},{id: 2,title: 'about',parent: null},{id: 3,title: 'team',parent: 2},{id: 4,title: 'company',parent: 2} ];
function treeify(list) {
var treeList = [];
var lookup = {};
list.forEach(function(obj) {
obj['children'] = [];
lookup[obj['id']] = obj;
});
console.log(lookup); // [problem number 1]
list.forEach(function(obj) {
if (obj['parent'] != null) {
lookup[obj['parent']]['children'].push(obj);
} else {
treeList.push(obj);
}
});
console.log(treeList); // [problem number 2]
};
treeify(list);
关于第一个问题:
这导致一个对象在每个父对象上都有一个子对象,据推测我认为,父对象此时应该有一个空数组 children。它是如何工作的?请赐教。
关于问题 2
treeList 已经形成了层次结构树。它是怎么发生的?它甚至没有将查找变量推送到 treeList 变量?它只推送具有等于 null 的父级(即根父级)的 obj。
希望得到您的答复。 如果您知道任何可以帮助我理解 javascript 的博客、文章等,请不要犹豫,在您的答案中添加链接。 非常感谢!
【问题讨论】:
-
您的问题 #1 是您在 console.log 中看到的并不是那个时间点查找状态的真实图片...尝试
console.log(JSON.parse(JSON.stringify(lookup)));查看“快照”在那一点上查找 -
为什么不是真的?你能再解释一下吗?
-
因为console.log输出对象,你展开那个对象,它显示的是当前状态,而不是记录对象的状态
标签: javascript