猿问

复杂对象的深拷贝

1,复杂对象描述,类似下图:

注意:bbb数组中的每一个对象都还有一个ccc数组,ccc数组里每个元素都有若干键值对。因为这是之前的图,没有修改,见谅!
2,需求描述:深拷贝这个复杂的数组对象。
还是大致描述一下我的需求吧,最外层数组有若干个对象,每一个都是一类物品,aaa是这个物品的类别(比如说笔)。bbb是这类物品的一个集合(比如说,铅笔,圆珠笔1,圆珠笔2。即bbb.name)。bbb中再有ccc数组,可以是bbb的一个属性集合(比如说是厂家a,厂家b);
3,做过的尝试:
(1),Object.assign();只能拷贝第一层。
(2),JSON.stringify()和JSON.parse(),有一些缺点,例如当某一属性值为function时就不能用这个方法。
4,目前的想法:
(1):递归复制。(新手,不常用递归,也不怎么会用递归)
(2):jq的extend。(不想引入jq,当然也不知道能不能用)
5,请各位大神指点!
6,有大神指出不能做伸手党,那么请各位大神只提供一下思路,或者一些小弟不知道的方法,或者是伪代码,感谢各位i!

慕无忌1623718
浏览 387回答 1
1回答

凤凰求蛊

function clone(obj) {&nbsp; if (obj == null) {&nbsp; &nbsp; return null&nbsp; }&nbsp; if (Array.isArray(obj)) {&nbsp; &nbsp; const a = []&nbsp; &nbsp; for (let i = 0; i < obj.length; i++) {&nbsp; &nbsp; &nbsp; a.push(clone(obj[i]))&nbsp; &nbsp; }&nbsp; &nbsp; return a&nbsp; } else if (typeof obj === 'object') {&nbsp; &nbsp; const o = {}&nbsp; &nbsp; for (let key in obj) {&nbsp; &nbsp; &nbsp; o[key] = clone(obj[key])&nbsp; &nbsp; }&nbsp; &nbsp; return o&nbsp; }&nbsp; return obj}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答