[英]Packing tree into array in Javascript
好的,这应该不难,但是我遇到了奇怪的和怪异的骗子。
我正在尝试将一棵树打包成一个数组,其中每个节点都是这样的:
fl幸是如此奇怪,我根本无法理解:当我尝试向节点添加孩子时,我会做类似的事情
if(node.children == undefined) {
node.children = new Array();
}
node.children.push({ title: value, key: key });
这是删除一些先前插入的节点...。所以我进行了一些调试,发现以下代码:
if(node.children == undefined) {
node.children = new Array();
}
是错误的,这根本没有任何意义-如果未定义node.children,node.children = new Array()不应删除任何内容……,对吗?
难道我做错了什么? 如果是这样,如何将树打包成Javascript数组?
您使用undefined
值的方式与Javascript标准做法不一致。 我不确定这是否可以解决您的问题,但请尝试将您的代码更改为
if (typeof(node.children) == 'undefined') {
node.children = [];
}
这实际上可能会有所帮助。 同样,如您所见,不需要使用Array构造函数: []
创建一个新的空数组。
未定义不是Javascript中的实际保留字。 没有什么可以阻止您进行设置
undefined = 2;
在此之后,与之进行的任何比较都将无法预测。
您是否尝试过in
操作符?
if (!("children" in node))
node.children = [];
要检查对象上是否存在属性,请使用hasOwnProperty
if (!node.hasOwnProperty('children')) {
node.children = [];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.