码迷,mamicode.com
首页 > 编程语言 > 详细

JS深拷贝数组和对象

时间:2020-04-17 00:26:46      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:对象   逻辑   UNC   接受   color   就是   拷贝   并且   挑战   

  有时候在些JS代码时不小心直接给数组和对象直接赋值,可能不会直接产生什么副作用,但若是遇到了奇怪的问题了,这很有可能就是在拷贝数组或者对象时时进行浅拷贝,接受者在不知不觉地改变了某些元素的值,从而导致原始值就莫名其妙地被同步修改了;面对这种情况,最好对数组或者对象进行深拷贝,为了不影响某些元素的丢失(比如某些value值是undefined或者function),此时强力推荐使用循环的方式进行拷贝。假设目前有个数组arrayList,并且每个元素都是对象,那么就需要进行两次的循环,逻辑代码如下所示:

let arrayList = [对象1, 对象2,......,对象n] 
// 此时将数组arrayList做深度拷贝
let deepCopyList = []
arrayList.foreach(item => {
    let copyMap = {}
    for (key in item) {
        copyMap[key] = item[key]  // 这里假设item多是简单的元素的Map对象
    }
    deepCopyList.push(copyMap)
})

// 说明:可以根据实际的数据结构来挑战循环层次,也可以采用递归的方式处理

 

JS深拷贝数组和对象

标签:对象   逻辑   UNC   接受   color   就是   拷贝   并且   挑战   

原文地址:https://www.cnblogs.com/bien94/p/12716703.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!