详解JavaScript中的数组合并方法和对象合并方法


Posted in Javascript onMay 11, 2018

1 数组合并

1.1 concat 方法

var a=[1,2,3],b=[4,5,6];
var c=a.concat(b);
console.log(c);// 1,2,3,4,5,6
console.log(a);// 1,2,3 不改变本身

1.2 循环遍历

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);

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()

var obj1= {'a': 1};
var obj2= {'b': 1};
var c = $.extend(obj1, obj2); 
console.log(obj1); // {a: 1, b: 1} obj1已被修改 
//或者 <br>var obj3 = $.extend({}, obj1, obj2) <br>console.log(obj3); //{a: 1, b: 1} 不会改变obj1,obj2

2.2 遍历赋值

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)
//a. 复制一个对象<br>var obj = { a: 1 ,b:2};
var copyObj = Object.assign({}, obj);
console.log(copyObj); // { a: 1,b:2 }<br><br>//b.合并多个对象 
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的影响

总结

以上所述是小编给大家介绍的JavaScript中的数组合并方法和对象合并方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
IE与firefox之jquery用法区别
Oct 03 Javascript
js或css文件后面跟参数的原因说明
Jan 09 Javascript
javascript parseInt与Number函数的区别
Jan 21 Javascript
javascript基于HTML5 canvas制作画箭头组件
Jun 25 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
Mar 13 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
Sep 05 Javascript
js 判断登录界面的账号密码是否为空
Feb 08 Javascript
利用express启动一个server服务的方法
Sep 17 Javascript
JavaScript数组push方法使用注意事项
Oct 30 Javascript
详解webpack import()动态加载模块踩坑
Jul 17 Javascript
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
vue实现的组件兄弟间通信功能示例
Dec 04 Javascript
Node.js使用cookie保持登录的方法
May 11 #Javascript
实例解析Vue.js下载方式及基本概念
May 11 #Javascript
AngularJS模态框模板ngDialog的使用详解
May 11 #Javascript
基于ionic实现下拉刷新功能
May 10 #Javascript
详解各版本React路由的跳转的方法
May 10 #Javascript
React路由管理之React Router总结
May 10 #Javascript
React从react-router路由上做登陆验证控制的方法
May 10 #Javascript
You might like
在PHP中利用XML技术构造远程服务(上)
2006/10/09 PHP
PHP学习之PHP表达式
2006/10/09 PHP
php 不同编码下的字符串长度区分
2009/09/26 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
getComputedStyle与currentStyle获取样式(style/class)
2013/03/19 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
解决Echarts 显示隐藏后宽度高度变小的问题
2020/07/19 Javascript
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
Python进程池Pool应用实例分析
2019/11/27 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
Python unittest框架操作实例解析
2020/04/13 Python
python对execl 处理操作代码
2020/06/22 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
linux下进程间通信的方式
2013/01/23 面试题
区域总监的岗位职责
2013/11/21 职场文书
单位单身证明范本
2014/01/11 职场文书
服装行业创业计划书范文
2014/02/05 职场文书
清明节扫墓活动方案
2014/03/02 职场文书
伊索寓言教学反思
2014/05/01 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
世界遗产导游词
2015/02/13 职场文书
感恩教师主题班会
2015/08/12 职场文书
如何撰写促销方案?
2019/07/05 职场文书
Python OpenCV超详细讲解基本功能
2022/04/02 Python