为了账号安全,请及时绑定邮箱和手机立即绑定

创建具有元素路径数组的嵌套数组

创建具有元素路径数组的嵌套数组

GCT1015 2021-10-21 10:32:45
我有这个数组:var array ={data: [        { id:'1',          name:'first',          data:[] }]}我有这个路径:path = ['3','1','2']; 我如何根据路径动态推送数据并创建这个:  array.data= myData;  array.data[3].data= myData;  array.data[3].data[1].data =myData;  array.data[3].data[1].data[2].data= myData;myData 存储来自服务器的数据并每次更改我的数据示例var myData = { id:'5',          name:'abc',          data:[] },{ id:'7',          name:'def',          data:[] }想要的结果应该是这样的:我希望能够像上面那样创建这个数组,并且可以像上面那样访问数据。var array ={data: [        { id:'1',          name:'first',          data:[] },{ id:'2',          name:'first',          data:[] },{ id:'3',          name:'first',          data:[] },{ id:'4',          name:'first',          data:[                { id:'5',                  name:'first',                  data:[]                },                { id:'6',                 name:'first',                 data:[                        { id:'7',                          name:'first',                          data:[]                         },                       { id:'8',                         name:'first',                         data:[                                { id:'8',                                  name:'first',                                 data:[]                                },                                { id:'8',                         name:'first',                         data:[]                     }]                     }]                }] }]}
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

如果我正确理解您的问题,您希望动态构造一个对象(即result如下所示),即myData从提供的path数组中嵌套对象的克隆。


一种方法array.data[3].data[1].data[2].data是通过数组上的reduceRight()方法产生所需的访问方法(即)path,如下所示:


const myData = { id: '1', name: 'first' };

const path = ['3', '1', '2'];


const array = { 

  data : path.reduceRight((acc, part) => 

    ({ [part] : { data : { ...acc, ...myData } }}), {}) 

}


console.log(array.data[3].data);

console.log(array.data[3].data[1].data);

console.log(array.data[3].data[1].data[2].data);


查看完整回答
反对 回复 2021-10-21
  • 2 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信