js中数组和对象的合并
1 数组合并
1.1 concat 方法
|
1
2
3
4
|
var a=[1,2,3],b=[4,5,6];var c=a.concat(b);console.log(c);// 1,2,3,4,5,6console.log(a);// 1,2,3 不改变本身 |
1.2 循环遍历
|
1
2
3
4
5
6
7
8
|
var arr1=['a','b'];var arr2=['c','d','e'];for(var i=0;i<arr2.length;i++){ arr1.push(arr2[i]) }console.log(arr1);//['a','b','c','d','e'] |
1.3 apply
合并数组arr1和数组arr2,使用Array.prototype.push.apply(arr1,arr2) or arr1.push.apply(arr1,arr2);
|
1
2
3
4
5
6
7
8
|
var arr1=['a','b'];var arr2=['c','d','e'];Array.prototype.push.apply(arr1,arr2);//或者arr1.push.apply(arr1,arr2);<br>console.log(arr1) //['a','b','c','d','e'] |
2 对象合并
2.1 $.extend()
|
1
2
3
|
var obj1= {'a': 1};var obj2= {'b': 1};var c = $.extend(obj1, obj2); |
|
1
|
console.log(obj1); // {a: 1, b: 1} obj1已被修改 |
|
1
|
//或者 <br>var obj3 = $.extend({}, obj1, obj2) <br>console.log(obj3); //{a: 1, b: 1} 不会改变obj1,obj2 |
2.2 遍历赋值
|
1
2
3
4
5
6
7
8
9
|
var obj1={'a':1};var obj2={'b':2,'c':3};for(var key in obj2){ if(obj2.hasOwnProperty(key)===true){ <br> //此处hasOwnProperty是判断自有属性,使用 for in 循环遍历对象的属性时,原型链上的所有属性都将被访问会避免原型对象扩展带来的干扰 obj1[key]=obj2[key];} }console.log(obj1);//{'a':1,'b':2,'c':3}; |
2.3 Obj.assign()
可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。
Object.assign(target, ...sources)
|
1
2
3
|
//a. 复制一个对象<br>var obj = { a: 1 ,b:2};var copyObj = Object.assign({}, obj);console.log(copyObj); // { a: 1,b:2 }<br><br>//b.合并多个对象 |
|
1
2
3
4
5
6
7
|
var o1 = { a: 1 };var o2 = { b: 2 };var o3 = { c: 3 };var obj = Object.assign(o1, o2, o3);console.log(obj); // { a: 1, b: 2, c: 3 }console.log(o1); // { a: 1, b: 2, c: 3 }, 且目标对象自身也会改变。 |
2.4 对象的深拷贝和浅拷贝
2.4.1 浅拷贝

var obj1={'a':1};
var obj2={'b':{'b1':22,'b2':33}};
$.extend(obj1, obj2); //obj1拷贝了obj2的属性
console.log(obj1) // {'a':1,'b'{'b1':22,'b2':33}}
console.log(obj1.b.b1) // 22
obj2.b.b1=44; //obj2重新赋值
console.log(obj1.b.b1) // 44 obj1.b仅拷贝了对象的指引,所以受原obj2的影响

2.4.2 深拷贝

var obj1={'a':1};
var obj2={'b':{'b1':22,'b2':33}};
$.extend(true,obj1, obj2); //第一个参数设为true表示深复制
console.log(obj1) // {'a':1,'b'{'b1':22,'b2':33}}
console.log(obj1.b.b1) // 22
obj2.b.b1=44; //obj2重新赋值
console.log(obj1.b.b1) // 22 obj1拷贝了obj2的所有属性以及值,并不受obj2的影响

js中数组和对象的合并的更多相关文章
- js 中数组或者对象的深拷贝和浅拷贝
浅拷贝 : 就是两个js 对象指向同一块内存地址,所以当obj1 ,obj2指向obj3的时候,一旦其中一个改变,其他的便会改变! 深拷贝:就是重新复制一块内存,这样就不会互相影响. 有些时候我们定义 ...
- JS中数组与对象的遍历方法实例小结
一.数组的遍历: 首先定义一个数组 1 arr=['snow','bran','king','nightking']; 1.for循环,需要知道数组的长度; 2.foreach,没有返回值,可以不知道 ...
- js中数组Array对象的方法sort()的应用
一. sort()方法的介绍 //给一组数据排序 var arrNum = [12,1,9,23,56,100,88,66]; console.log("排序前的数组:"+arrN ...
- JS中数组和对象的区别
- js中 给json对象添加属性和json数组添加元素
js中 给json对象添加新的属性 比如现在有一个json对象为jsonObj,需要给这个对象添加新的属性newParam,同时给newParam赋值为pre.做法如下: var obj={ &quo ...
- js中如何访问对象和数组
js中如何访问对象和数组 一.总结 一句话总结:js访问对象点和中括号,访问数组的话就是中括号 对象 . [] 数组 [] 1.js访问对象的两种方式? . [] 可以使用下面两种方式访问对象的属性和 ...
- js中数组方法大全
js数组方法大全 一:前言 我们在学到js中数组的时候,我们会接触到js中数组的一些方法,这些方法对我们来说,可以很遍历的达到我们想要的结果,但是因为方法比较多,有些方法也不常用,可能会过一段时间就会 ...
- js中两个对象的比较
代码取自于underscore.js 1.8.3的isEqual函数. 做了一些小小的修改,主要是Function的比较修改. 自己也加了一些代码解读. <!DOCTYPE html> & ...
- js中的json对象详细介绍
JSON一种简单的数据格式,比xml更轻巧,在JavaScript中处理JSON数据不需要任何特殊的API或工具包,下面为大家详细介绍下js中的json对象, 1.JSON(JavaScript Ob ...
随机推荐
- ASP.NET Core on K8S学习初探(2)K8S基本概念快速一览
在上一篇<单节点环境搭建>中,通过Docker for Windows在Windows开发机中搭建了一个单节点的K8S环境,接下来就是动人心弦的部署ASP.NET Core API到K8S ...
- MyBatis从入门到精通(五):MyBatis 注解方式的基本用法
最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. @Select 注解 1.1 使 ...
- Programming In Lua 第十章
1,lua中的数据结构都是表来实现的.数组就是索引为数值的表. 2,矩阵就是二维数组,三角矩阵就是矩阵的一半. 3,稀疏矩阵问题: 4, 5, 6,
- 思维导图xmind的使用方法
什么是Xmind Xmind是一款简单好用的思维导图软件,除了可以轻松绘制基本逻辑图,还支持组织结构图(竖直).树状图(水平+竖直).思维导图(辐射).鱼骨图.二维图(表格)模型.免费版可以把思维导图 ...
- J-link使用SWD下载的连线方式
手头有两块开发板,一个是F103ZET6,另一个是C8T6.后者开发板没有JTAG口,所以只能用SWD下载和调试程序. 有如下总结: 1.有些开发板对boot的电平有要求,网上说boot0要接高电平. ...
- win10win7office系列激活工具 KMSAuto Net 2016 v1.5.4 绿色便携版
下载地址:点我 KMSpico又称KMS激活工具,KMSpico是目前成功且经常更新的Windows激活工具,可以激活任何版本的window系统和任何版本的Office软件,即使是win8和offic ...
- LINUX_记录(一)
我有了一台电脑,有好多的硬件,CPU啊.内存啊.光驱啊.硬盘啊等等,我不想装windows,我想装linux,我就装了一个linux.事实上,可以跑,没问题,我在思考,why? 我装的linux,包括 ...
- 【题解】导游-C++
Description 宁波市的中小学生们在镇海中学参加程序设计比赛之余,热情的主办方邀请同学们参观镇海中学内的各处景点,已 知镇海中学内共有n处景点.现在有n位该校的学生志愿承担导游和讲解任务.每个 ...
- iconfontのsymbol的使用
iconfontのsymbol的使用 iconfont三种方式的优缺点 unicode 优点: 1.兼容性最好,支持ie6+ 2.支持按字体的方式去动态调整图标大小,颜色等等 缺点: 1.不支持多色图 ...
- 个人永久性免费-Excel催化剂功能第90波-xml与json数据结构转换表格结构
在网络时代,大量的数据交互以xml和json格式提供,特别是系统间的数据交互和网络WebAPI.WebService接口的数据提供,都是通过结构化的xml或json提供给其他应用调用返回数据.若能提供 ...