我有这个数组: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);
添加回答
举报
0/150
提交
取消