let arr = [1,2,3,4,5,6]
let a1 = arr.slice()
a1[0] = 2
console.log(arr, a1) // [1, 2, 3, 4, 5, 6] [2, 2, 3, 4, 5, 6]
let arr = [1,2,3,{name: 'ww'},{name: 'ls'}]
let a1 = arr.slice()
a1[4].name = 'ww'
console.log(arr, a1)
// [1,2,3,{name: 'ww'},{name: 'ww'}]
// [1,2,3,{name: 'ww'},{name: 'ww'}]
JSON.parse(JSON.stringify())
// JSON.stringify(obj)将JSON转为字符串
// JSON.parse(string)将字符串转为JSON格式
function clone(target) {
if (typeof target !== 'object') return target // 考虑简单类型
let cloneTarget = Array.isArray(target) ? [] : {} // 考虑数组还是对象
for (const key in target) {
cloneTarget[key] = clone(target[key]) // 考虑嵌套
}
return cloneTarget
}
let str = '1'
let arr = [1, 2, 3, 4, { name: 'zs' }]
let obj = { name: 'zs', age: 19 }
let cloneStr = clone(str)
console.log(cloneStr)
let cloneArr = clone(arr)
console.log(arr)
cloneArr[4].name = 'ls'
console.log(cloneArr)
console.log(arr)
let cloneObj = clone(obj)
cloneObj.name = 'ww'
console.log(cloneObj)
console.log(obj)
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |