feat: 添加深拷贝函数
This commit is contained in:
parent
8ab54e7d59
commit
81c2e04dfa
27
js/深拷贝.js
Normal file
27
js/深拷贝.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
/**
|
||||||
|
* @description 传入一个对象或者数组,返回一个新的对象,内部的引用值也会修改
|
||||||
|
* @param {Object | Array} obj - 一个引用类型 Object 或者 Array
|
||||||
|
* @returns {Object | Array} - 返回新的值
|
||||||
|
*/
|
||||||
|
function copy(obj){
|
||||||
|
// 判断这个值是否是引用值,如果不是的话就返回
|
||||||
|
if (typeof obj !== 'object' || obj === null) return obj
|
||||||
|
// 判断数组是否是数组,如果是数组就采用数组的方式便利,否则使用对象的方式便利
|
||||||
|
var newObj = null
|
||||||
|
if(Array.isArray(obj)) {
|
||||||
|
newObj = []
|
||||||
|
var n = obj.length
|
||||||
|
for (var i = 0;i<n;i++) {
|
||||||
|
newObj[i] = copy(obj[i])
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
newObj = {}
|
||||||
|
var keys = Object.keys(obj);
|
||||||
|
var n = keys.length
|
||||||
|
for (var i = 0;i<n;i++) {
|
||||||
|
newObj[keys[i]] = copy(obj[keys[i]])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return newObj
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user