假设我有以下内容
let arr =
[
{name: "el1", id: 1, parent_id: 0},
{name: "el2", id: 2, parent_id: 1},
{name: "el3", id: 3, parent_id: 0},
{name: "el4", id: 4, parent_id: 3},
{name: "el5", id: 5, parent_id: 0},
{name: "el6", id: 6, parent_id: 2},
]
这会产生如下所示的数组
[
{name: "el1", id: 1, parent_id: 0, childs: [{name: "el2", id: 2, parent_id: 1, childs: [{name: "el6", id: 6, parent_id: 2}]}]},
{name: "el3", id: 3, parent_id: 0, childs: [{name: "el4", id: 4, parent_id: 3}},
{name: "el5", id: 5, parent_id: 0},
]
我可以做一个级别,但是多个杠杆怎么样?我的伪代码类似于
//iterate the array
//if array[i] has a parent_id != 0, push the element into its corresponding parrent, and delete the pushed index
但是对于无限的势能级,我该怎么做呢?
尝试如下所示。解释在评论中。
let arr = [
{name: "el1", id: 1, parent_id: 0},
{name: "el2", id: 2, parent_id: 1},
{name: "el3", id: 3, parent_id: 0},
{name: "el4", id: 4, parent_id: 3},
{name: "el5", id: 5, parent_id: 0},
{name: "el6", id: 6, parent_id: 2},
];
function addChild(obj) {
// get childs and further retrieve its childs with map recursively
let childs = arr.filter(a => a.parent_id == obj.id).map(addChild);
// if childs are found then add childs in object
if (childs.length > 0) {
return { ...obj, childs };
}
// if no child found then return object only
return { ...obj };
}
// get childs for parent id = 0
let result = arr.filter(a => a.parent_id == 0).map(addChild);
console.log(result)
我在Jolt转换中有一个JSON对象数组的数组,但我需要将对象向上移动到顶层数组。我尝试添加另一个Shift,但这只是将对象移到相同的位置,或者将两个子对象的值放入一个值数组中。
问题内容: 假设我有一个像这样的数组 但我想将其转换为这样的对象: 能做到吗?我尝试过的所有方法都只会获得最后一个键值对。 问题答案: 如果您使用的是ES6或更高版本:
我正在尝试使用以下代码段打印一些日志。这不会产生所需的输出。 但是,下面的代码工作正常。 我认为还表示。为什么第一个代码段不起作用?请建议。 在调试时,我看到将Obeject[]包装在长度为1的父Object[]中。
问题内容: 问题在于确定以下符号之间的权衡: 基于JSON : 基于数组 : 关于同一问题的这篇文章,我已经决定(在前端)使用JSON对象表示法而不是对象数组,因为它符合我的要求,更好的性能和更少的浏览器代码。 但是问题在于列表本身不是静态的。我的意思是,该列表正在生成,即从DB(NoSQL)获取/存储,并通过服务器上的JavaAPI为新条目创建。我无法决定在后端应使用哪种表示法(最终也会影响UI
问题内容: 在我目前正在从事的一个项目中,我遇到了一个角度异常: 在寻找解决方案的搜索中,我直接在浏览器中输入了Web服务的URL,但令人惊讶的是,我没有收到预期的数组。 Web服务类: 当我输入网址时,我希望看到带有JSON对象的JSON数组: 但是,相反,我收到的JSON对象的属性与我期望的JSON对象相同,没有任何数组: 所以我想知道为什么没有数组,当我添加另一个Clazz对象时会发生什么。
当我对它进行降序排序时,它应该首先显示Parent3,因为它有一个Z。这是我当前的hql,它得到了1>2>3的错误结果: 如果没有distinct,尽管它选择了多个相同的父级,但它仍然很好。 我有一个模型设置如下: 编辑:在集合中按HQL顺序对其进行排序,尽管当双亲具有相同的children.name值时,它不会比较下一个可能的值。即。 如果Parent1有孩子abba,zeon Parent2有