首页前端工具函数前端深拷贝

前端深拷贝

分类前端工具函数时间2023-08-11 13:04:00发布RustStream浏览48
摘要:代码解释 在前端开发中,深拷贝是一个常见的需求,特别是在处理复杂数据结构时,如嵌套对象或数组。深拷贝意味着创建一个新的对象或数组,并且递归地复制原对象或数组中的所有属性(包括嵌套的对象和数组),使得新对象与原对象在内存中是完全独立的。 实现方法 使用JSON数列化与反数列化 let newObj = JSON.parse(JSON.stringify(oldObj 使用递归实现 export function deepClone(obj { if(typeof obj !== 'object' || obj === null { return obj } if(obj instanceof Date { return new Date(obj.getTime( } if(obj instanceof RegExp { return new RegExp(obj } if(Array.isArray(obj { return obj.map(item =<!--autointro-->...

代码解释

在前端开发中,深拷贝是一个常见的需求,特别是在处理复杂数据结构时,如嵌套对象或数组。深拷贝意味着创建一个新的对象或数组,并且递归地复制原对象或数组中的所有属性(包括嵌套的对象和数组),使得新对象与原对象在内存中是完全独立的。

实现方法

  1. 使用JSON数列化与反数列化

    let newObj = JSON.parse(JSON.stringify(oldObj))
    
  2. 使用递归实现

    export function deepClone(obj){
        if(typeof obj !== 'object' || obj === null){
            return obj
        }
    
        if(obj instanceof Date){
            return new Date(obj.getTime())
        }
    
        if(obj instanceof RegExp){
            return new RegExp(obj)
        }
    
        if(Array.isArray(obj)){
            return obj.map(item => deepClone(item))
        }
    
        const cloneObj = {};
        for(let key in obj){
            if(obj.hasOwnProperty(key)){
                cloneObj[key] = deepClone(obj[key])
            }
        }
        return cloneObj
    }
    
  3. 使用第三方库(如lodash的cloneDeep)

    const _ = require('lodash');  
    const original = { /* ...复杂对象结构... */ };  
    const deepCopy = _.cloneDeep(original);
    

本文链接:https://blog.smallhao.fun/?id=8 转载需授权!

分享到:

Chen’Blog版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

JavaScript
封装图片懒加载处理函数 封装并发请求处理函数

游客 回复需填写必要信息
召唤伊斯特瓦尔