【发布时间】:2018-07-30 11:52:11
【问题描述】:
我已将此 plunker https://plnkr.co/edit/CIGAA5BmiKU4hCMsOaIB?p=preview 作为参考,但现在我需要动态数组操作
[
{
title: 'Menu 1',
id :1,
hide : true,
children: [],
},
{
title: 'Menu 2',
hide : true,
id :2,
children: [{
title: 'Sub Menu 2',
hide : true,
id :3,
children: [{
title: 'Sub Sub Menu 2',
hide : true,
id :4,
children: [{
title: 'Sub Sub Menu 2, Sibling 1',
hide : true,
id :6,
children: []
},
{
title: 'Sub Sub Sub Menu 2, Sibling 2',
hide : true,
id :12,
children: []
}]
}]
}]
},
{
title: 'Menu 3',
hide : true,
id :14,
children: []
}
];
现在我必须将孩子推送到 id 为 6 的对象中,并且每次操作后都需要更新整个对象。
我正在使用角度 5
我用过下面这个方法
find(id, items,newData) {
var i = 0, found;
for (; i < items.length; i++) {
if (items[i].id === id) {
items[i].children=newData;
return items;
} else if (_.isArray(items[i].children)) {
found = this.find(id, items[i].children,newData);
if (found) {
return false;
}
}
}
}
这里基本上 newData 是我需要推送的数组, items 是我推送后应该更新的主要对象
如果我在某个地方错了,请纠正我。如果 id 为 3 的元素有 id 为 4 的子元素,那么现在是否不应将其推送到同一个父 id 中。
所有对象都具有相同的结构,例如 newData 也有子对象
【问题讨论】:
-
我不太明白你代码中的逻辑
标签: javascript angular typescript lodash