javascript - 在 Javascript 中将树打包到数组中

标签 javascript tree-structure javascript-objects

好的,所以这应该不难,但是我遇到了奇怪的侥幸。

我正在尝试将一棵树打包到一个数组中,其中每个节点类似于:

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

这个侥幸太奇怪了,我根本无法理解它:当我尝试向节点添加一个子节点时,我做了类似的事情

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 = [];
}

这实际上可能有帮助。另外,正如您所看到的,使用数组构造函数是不必要的:[] 创建一个新的空数组。

Undefined 并不是 Javascript 中的实际保留字。没有什么可以阻止您设置

undefined = 2;

此后任何与它的比较都会出现不可预测的行为。

关于javascript - 在 Javascript 中将树打包到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2269856/

相关文章:

javascript - 如何创建一个可以使用仿射矩阵缩放/平移的 paper.js Path.Circle,但保持圆半径始终固定?

javascript - 如何让ng-repeat生成的所有div获得相同的高度

javascript - 如何以 Angular 动态创建嵌套Json文件?

javascript - 动态 Javascript 树结构

javascript - 如何在对象方法中选择 JavaScript 对象数组

Javascript 使用变量名实例化对象

javascript - 检查对象是否是JS中的事件

sql-server - 如何在数据库中存储目录/层次结构/树结构?

javascript - 输入 {a :1} giving 1, 和 {a :1, b :2} giving an error in a Javascript console? 的行为是什么