获取对象';javascript中基于深度的s序列号
我有一组嵌套很深的对象获取对象';javascript中基于深度的s序列号,javascript,arrays,object,Javascript,Arrays,Object,我有一组嵌套很深的对象 [ { id: 1, name: "task 1", wbs: 1 children: [ { id: 2, name: "task 1.1", wbs: 1.1 children: []
[
{
id: 1,
name: "task 1",
wbs: 1
children: [
{
id: 2,
name: "task 1.1",
wbs: 1.1
children: []
}
]
},
{
id: 1,
name: "task 2",
wbs: 2
children: [
{
id: 2,
name: "task 2.1",
wbs: 2.1
children: [
{
id: 2,
name: "task 2.1.1",
wbs: 2.1.1
children: []
}
]
}
]
},
{
id: 1,
name: "task 3",
wbs: 3
children: []
},
]
wbs编号应根据对象所在的位置和深度生成。当我将一个新对象推送到数组时,如何生成这个数字
也就是说,如果我将一个新对象推送到Task1的子数组,wbs编号应该是1.2。如何实现这一点?因为阵列保持可靠的插入顺序,所以实际上我们可以很容易地做到这一点!如果您在项目中经常这样做,我们甚至可以创建一个简单的原型函数来简化此过程:
让obj=[
{id:1,名称:“任务1”,wbs:“1”,子项:[{id:2,名称:“任务1.1”,wbs:“1.1”,子项:[]},
{id:1,名称:“任务2”,wbs:“2”,子项:[{id:2,名称:“任务2.1”,wbs:“2.1”,子项:[{id:2,名称:“任务2.1.1”,wbs:“2.1.1”,子项:[]},
{id:1,名称:“任务3”,wbs:“3”,子项:[]}
];
Array.prototype.wbsPush=函数(){
常量数组=此;
如果(!array.every(el=>el.wbs))返回false;
const previousWbs=array[array.length-1].wbs;
const newWbs=previousWbs.split('.').reverse().map((e,i)=>i?e:parseInt(e)+1.reverse().join('.');
array.push({id:array[array.length-1].id+1,名称:`task${newWbs}`,wbs:newWbs,子项:[]});
}
obj.wbsPush();//->wbs:4
obj[0].children.wbsPush();//->工作分解结构:1.2
控制台日志(obj)代码>您的预期输出是什么样的?我想知道新添加的对象的wbs编号是什么。也就是说,如果我要在任务2.1.1中添加一个新的对象邻接,我需要将wbs编号设置为2.1.2。给我们一个例子。。。在你的问题中提供你期望的结果