【发布时间】:2016-05-19 15:27:42
【问题描述】:
我有一个对象数组。每个对象如下所示:
{text: 'foo': level: N: children: M}
N 和 M 都是数字。 N 表示对象的“深度”位置(将整个数组想象成一棵树的表示)。 M 是该项目的子项总数。 Total 表示所有子层的所有节点和叶子的总和。
我拥有的数组中的对象不包含children 属性,我必须计算它。
“计算”数据示例:
{text: 'A': level: 0: children: 0}
{text: 'B': level: 0: children: 1}
{text: 'C': level: 1: children: 0}
{text: 'D': level: 0: children: 2}
{text: 'E': level: 1: children: 1}
{text: 'F': level: 2: children: 0}
A
B
|--C
D
|--E
|--F
我可以轻松地做一个for 循环,然后在项目上再迭代一次,从数组中的当前位置开始计算子项(基于 level 属性),但我觉得这不是最好(如“最快”)的方式。
我还能怎么做?
只是为了确保没有人发布比我目前拥有的“更糟糕”的代码,这就是我所拥有的:
for (var i = 0; i < data.length; i++) {
var item = data[i];
for (var j = i + 1; j < data.length; j++) {
if (item.level < data[j].level) {
item.children++;
} else {
break;
}
}
}
【问题讨论】:
-
请添加您的代码和一些数据。
-
@NinaScholz 什么数据?我已经发布了与该问题相关的所有数据。什么代码?我解释为非禁食代码的那个?
-
@Rajesh 请务必理解我的问题。我不知道孩子的价值(这是我应该计算的)。
-
顺便说一句,您的示例数据中的
:冒号太多
标签: javascript arrays