JS深拷贝数组和对象
2021-02-15 01:23
标签:对象 逻辑 UNC 接受 color 就是 拷贝 并且 挑战 有时候在些JS代码时不小心直接给数组和对象直接赋值,可能不会直接产生什么副作用,但若是遇到了奇怪的问题了,这很有可能就是在拷贝数组或者对象时时进行浅拷贝,接受者在不知不觉地改变了某些元素的值,从而导致原始值就莫名其妙地被同步修改了;面对这种情况,最好对数组或者对象进行深拷贝,为了不影响某些元素的丢失(比如某些value值是undefined或者function),此时强力推荐使用循环的方式进行拷贝。假设目前有个数组arrayList,并且每个元素都是对象,那么就需要进行两次的循环,逻辑代码如下所示: JS深拷贝数组和对象 标签:对象 逻辑 UNC 接受 color 就是 拷贝 并且 挑战 原文地址:https://www.cnblogs.com/bien94/p/12716703.htmllet 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)
})
// 说明:可以根据实际的数据结构来挑战循环层次,也可以采用递归的方式处理