【深浅拷贝的实现方式】
1. $.extend(deep,target.obj,obj1....);
var obj = {name:'张三',money:'1000w',girl:{name:'王晓凤',age:18,height:175}};var obj1 = {money:'100w',girl:{name:'古娜拉',weight:80,}};var obj2 = {sub:'博士'};
浅拷贝:deep:false 只对比第一个层级 属性名相同 就用后面的覆盖前面的
var res = $.extend(false,obj,obj1,obj2);console.log(res);
深拷贝:deep:true 递归拷贝 如果第一个层级的属性名和属性值都是对象,对比子属性
var res = $.extend(true,obj,obj1,obj2)console.log(res);
2. JSON.parse(JSON.stringify(数据));
JSON.stringify: 将数据转成json格式的数据 有js格式的字符串
JSON.parse: 将json格式的字符串转成js数据 新数据
var obj = {name:'张三',money:'10000w',arr:['房地产','股票','电影'],girl:{name:'王晓凤',age:18,height:175}};console.log(JSON.stringify(obj));var res = JSON.parse(JSON.stringify(obj));console.log(res,obj);console.log(res == obj);//false
3.递归拷贝
var obj = {name:'张三',money:'10000w',arr:['房地产','股票','电影'],girl:{name:'王晓凤',age:18,height:175}};
var arr = [1,2,3,4,5,6];// 判断数据类型的函数
function getType(data){return Object.prototype.toString.call(data).slice(8,-1);
}function deepClone(json){// 1. 判断传进来的数据类型 如果是数组创建一个新数组 如果是对象创建一个新对象 其他情况都直接返回if(getType(json) == 'Object'){var res = {};} else if(getType(json) == 'Array'){var res = [];} else{return json;}// 2. 把数据在复制存储一次 获取到每个数据for(var k in json){// 如果要拷贝的数据 是数组或者对象 需要进行递归拷贝if(getType(json[k]) == 'Object' || getType(json[k]) == 'Array'){res[k] = deepClone(json[k]);} else {res[k] = json[k];}}return res;}
console.log(deepClone(obj));
console.log(deepClone(arr));
【深浅拷贝的实现方式】相关推荐
- 前端代码深浅拷贝四种方式
今天公司的实习生有问我代码怎么深拷贝 下面我就给大家整理四种前端代码深拷贝的四种方式 前端数据分为基本数据类型和引用数据类型,当我们拷贝引用数据类型的时候,我们希望改变新数组(对象)不改变原本的数组( ...
- JS(JavaScript)中实现深浅拷贝的几种方式(详细阅读 非常重要)。
在了解深浅拷贝之前,我们先一起来简单来了解一下,JavaScript 数据存储的方式,以及数据类型(). JavaScript 中数据存储分为 简单数据类型和复杂数据类型(引用数据类型) 其中 5 种 ...
- 实现JS深浅拷贝的五种方式
一.堆栈.基本数据类型.引用数据类型 在了解深浅拷贝之前,我们需得对堆栈.基本数据类型.引用数据类型有基本的了解 基本数据类型:number.string.boolean.null.undefined ...
- python基础(三元运算+深浅拷贝+函数参数)
三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 1 书写格式: 2 result = 值1 if 条件 else 值2 3 即如果条件成立,则将值1赋给result ...
- python——赋值与深浅拷贝
结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一--python的变量及其存储 在详细的了解python中赋值.copy和deepcopy之前,我们还是要花一点时间来 ...
- Python的深浅拷贝讲解!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:皮钱超,厦门大学,Datawhale原创作者 本文约3000字,建 ...
- 【Python基础】Python的深浅拷贝讲解
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前言 在很多语言中都存在深浅拷贝两种拷贝数据的方式,Python中 ...
- 是时候捋一捋Java的深浅拷贝了
在开发.刷题.面试中,我们可能会遇到将一个对象的属性赋值到另一个对象的情况,这种情况就叫做拷贝.拷贝与Java内存结构息息相关,搞懂Java深浅拷贝是很必要的! 在对象的拷贝中,很多初学者可能搞不清到 ...
- Python中的赋值、引用和深浅拷贝
2019独角兽企业重金招聘Python工程师标准>>> 全局变量 在函数之外创建的变量属于main,又被称为全局变量.它们可以在main中的任意函数中访问,与局部变量在函数结束时消失 ...
最新文章
- 前谷歌工程团队负责人:如何打造一个完美的产品
- python期末考试编程题_智慧树知到_Python程序设计基础_期末考试答案
- 5页面调用原生相机_React Native与原生通信全梳理(iOS端)
- html switch开关实现隐藏,css3实现switch开关效果
- 使用ASP.NET Core 3.x 构建 RESTful API - 3.3.1 HTTP状态码
- 1095 解码PAT准考证 (25 分)
- Gallery和BaseAdapter容器
- python-day8-循环补充
- Python基础2-Python中文乱码(转)
- 极光推送JPush使用Java SDK开发
- 计算机技术和通信技术的关系,计算机技术与通信技术的关系
- 异常解决——Tomcat启动异常:Cannot assign requested address
- struts2值栈、struts2标签、ONGL表达式、EL表达式、JSTL表达式、jsp标签
- 高中计算机省赛试题,全国青少年信息学奥林匹克竞赛(高中组)初赛试题及答案...
- android 友盟渠道号,获取友盟渠道号
- ACM-ICPC 2018 南京赛区网络预赛 I.Skr(Manacher马拉车+Hash哈希/回文树)
- CentOS7搭建nextcloud创建私有云盘
- Win10屏幕亮度调节失效之终极解决方案
- 计算机bootmgr丢失,电脑开机提示bootmgr is missing的解决方法
- 三一重机“一天内解决”服务标准背后,百度智能云守护“中国速度”
热门文章
- 一文掌握GSEA,超详细教程!
- 蓝桥杯python基础练习
- mysql 竖线_为什么MySQL拒绝在INSERT INTO字符串中使用竖线('|')字符?
- 局域网内windows远程mac(使用TeamView)
- Ninth season twenty-first episode,Chandler and Monica may never have children??????
- python_给视频打马赛克
- tomcat无法响应请求,假死
- html文本怎么打印出来,如何把一个html文件直接打印出来(200分)
- iOS应用程序内存泄露的监测
- 贝努利概率 matlab