/**** @param {*} target*/export function clone1(target){//类型判断 {} [] nullif(typeof target === 'object' && target !== null){//判断数据是否为数组if(Array.isArray(target)){return [...target];}else{return {...target};}}else{return target;}}/**** @param {*} target*/export function clone2(target){//判断if(typeof target === 'object' && target !== null){//创建一个容器const result = Array.isArray(target) ? [] : {};//遍历 target 数据for(let key in target) {//判断当前对象身上是否包含该属性if(target.hasOwnProperty(key)){//将属性设置到 result 结果数据中result[key] = target[key];}}return result;}else{return target;}}export function deepClone1(target){//通过数据创建 JSON 格式的字符串let str = JSON.stringify(target);//将 JSON 字符串创建为 JS 数据let data = JSON.parse(str);return data;}export function deepClone2(target){//检测数据的类型if(typeof target === 'object' && target !== null ){//创建一个容器const result = Array.isArray(target) ? [] : {};//遍历对象for(let key in target){//检测该属性是否为对象本身的属性(不能拷贝原型对象的属性)if(target.hasOwnProperty(key)){//拷贝result[key] = deepClone2(target[key]);}}return result;}else{return target;}}export function deepClone3(target, map=new Map()){//检测数据的类型if(typeof target === 'object' && target !== null ){//克隆数据之前, 进行判断, 数据之前是否克隆过let cache = map.get(target);if(cache){return cache;}//创建一个容器const result = Array.isArray(target) ? [] : {};//将新的结果存入到容器中map.set(target, result);//遍历对象for(let key in target){//检测该属性是否为对象本身的属性(不能拷贝原型对象的属性)if(target.hasOwnProperty(key)){//拷贝result[key] = deepClone3(target[key], map);}}return result;}else{return target;}}export function deepClone4(target, map=new Map()){//检测数据的类型if(typeof target === 'object' && target !== null ){//克隆数据之前, 进行判断, 数据之前是否克隆过let cache = map.get(target);if(cache){return cache;}//判断目标数据的类型let isArray = Array.isArray(target);//创建一个容器const result = isArray ? [] : {};//将新的结果存入到容器中map.set(target, result);//如果目标数据为数组if(isArray){//forEach 遍历target.forEach((item, index) => {result[index] = deepClone4(item, map);});}else{//如果是对象, 获取所有的键名, 然后 forEach 遍历Object.keys(target).forEach(key => {result[key] = deepClone4(target[key], map);});}return result;}else{return target;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。