好的,所以这应该不难,但是我遇到了奇怪而奇怪的吸虫。
我正在尝试将树打包成一个数组,其中每个节点都是这样的:
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 = new如果node.children未定义,那么新的Array()不应该删除ANYTHING ......对吧?
我做错了吗?如果是这样,我如何将树打包到Javascript中的数组?
答案 0 :(得分:4)
您使用undefined
值的方式与Javascript标准做法不一致。我不确定这是否能解决您的问题,但请尝试将代码更改为
if (typeof(node.children) == 'undefined') {
node.children = [];
}
这可能实际上有所帮助。此外,如您所见,使用Array构造函数是不必要的:[]
创建一个新的空数组。
未定义不是Javascript中的实际保留字。没有什么可以阻止你设置
undefined = 2;
之后,任何与它的比较都会出现不可预测的行为。
答案 1 :(得分:1)
您是否尝试过in
运营商?
if (!("children" in node))
node.children = [];
答案 2 :(得分:1)
要检查对象上是否存在属性,请使用hasOwnProperty
if (!node.hasOwnProperty('children')) {
node.children = [];
}