Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取对象';javascript中基于深度的s序列号_Javascript_Arrays_Object - Fatal编程技术网

获取对象';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。给我们一个例子。。。在你的问题中提供你期望的结果