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

复杂对象的深拷贝

复杂对象的深拷贝

慕无忌1623718 2018-12-13 18:18:10
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!
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

function clone(obj) {

  if (obj == null) {

    return null

  }

  if (Array.isArray(obj)) {

    const a = []

    for (let i = 0; i < obj.length; i++) {

      a.push(clone(obj[i]))

    }

    return a

  } else if (typeof obj === 'object') {

    const o = {}

    for (let key in obj) {

      o[key] = clone(obj[key])

    }

    return o

  }

  return obj

}


查看完整回答
反对 回复 2019-01-10
  • 1 回答
  • 0 关注
  • 386 浏览
慕课专栏
更多

添加回答

举报

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