繁体   English   中英

用Java将树打包成数组

[英]Packing tree into array in Javascript

好的,这应该不难,但是我遇到了奇怪的和怪异的骗子。

我正在尝试将一棵树打包成一个数组,其中每个节点都是这样的:

  • 标题:显示字符串
  • 键:id-value
  • 子节点:子节点数组

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM