题解 | #简易深拷贝#

简易深拷贝

http://www.nowcoder.com/practice/3d436d07f5cb4b628a4dd7c12476cabe

16_简易深拷贝

本题考点:递归、遍历

根据题目要求,实现对象参数的深拷贝并返回拷贝之后的新对象,因为参数对象和参数对象的每个数据项的数据类型范围仅在数组、普通对象({})、基本数据类型中且无需考虑循环引用问题,所以不需要做过多的数据类型判断,核心步骤有:

  1. 如果对象参数的数据类型不为“object”或为“null”,则直接返回该参数
  2. 根据该参数的数据类型是否为数组创建新对象
  3. 遍历该对象参数,将每一项递归调用该函数本身的返回值赋给新对象

参考答案

const _sampleDeepClone = target => {
    if(typeof target === 'object' && target !== null) {
        const cloneTarget = Array.isArray(target) ? [] : {}
        for(prop in target) {
            if(target.hasOwnProperty(prop)) {
                cloneTarget[prop] = _sampleDeepClone(target[prop])
            }
        }
        return cloneTarget
    } else {
        return target
    }
}

全部评论

相关推荐

勤劳的鲸鱼在okr拆解:没有别的选择就去吧,有实习和没实习找工作是天上地下
点赞 评论 收藏
分享
评论
10
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务