数组的深拷贝

153 阅读1分钟

var arr = [1, 2, 3, 4]

var arr1 = arr // 赋值操作,指向同一个内存空间
var arr2 = arr.slice() // 浅复制,元素的复制,arr2是新的数组
var arr3 = []arr.forEach((item) => {  arr3.push(item)}) // 数组复制
var arr4 = []for (let i in arr) {  arr4[i] = arr[i]}// 深拷贝,for in会迭代可以迭代的项,属性也会被拷贝

关于slicesplice

  •  这两个都作用于数组

  •  slice(0, 2)splice(0, 2)都是对截取下标为0到下标为2之间的元素,不包括2

  •  slice()是对原数组进行处理,返回一个结果数组,原数组不变。

  •  splice()也是返回一个结果数组,但是会改变原数组

  • splice() 用于删除数组中某一个元素,例如


var arr = [1, 2, 3, 4]
arr.splice(0, 1)
// arr = [2, 3, 4]

slice()用于获取数组中某一部分

对象拷贝

var obj = {
    a: 1
}
var obj1 = obj //引用
obj1 === obj // true
var obj2 = JSON.parse(JSON.stringify(obj)) // 对象复制
obj2 === obj // false