详解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 相关文章推荐
jQuery开发者都需要知道的5个小技巧
Jan 08 Javascript
JavaScript制作的可折叠弹出式菜单示例
Apr 04 Javascript
js实现input框文字动态变换显示效果
Aug 19 Javascript
Easyui使用Dialog行内按钮布局的实例
Jul 27 Javascript
JavaScript内存泄漏的处理方式
Nov 20 Javascript
vue forEach循环数组拿到自己想要的数据方法
Sep 21 Javascript
vue 巧用过渡效果(小结)
Sep 22 Javascript
JS中验证整数和小数的正则表达式
Oct 08 Javascript
ElementUI Tag组件实现多标签生成的方法示例
Jul 08 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
Jul 17 Javascript
JavaScript canvas绘制折线图
Feb 18 Javascript
vue-element-admin项目导入和导出的实现
May 21 Vue.js
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正则匹配汉字的方法介绍
2013/04/25 PHP
PHP远程采集图片详细教程
2014/07/01 PHP
PHP实现的购物车类实例
2015/06/17 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
Prototype ObjectRange对象学习
2009/07/19 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
使用jquery清空、复位整个输入域
2015/04/02 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
纯JS实现五子棋游戏
2020/05/28 Javascript
python制作一个桌面便签软件
2015/08/09 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
python3判断url链接是否为404的方法
2018/08/10 Python
python f-string式格式化听语音流程讲解
2019/06/18 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
python selenium 获取接口数据的实现
2020/12/07 Python
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
日本最大化妆品和美容产品的综合口碑网站:cosme shopping
2019/08/28 全球购物
什么是组件架构
2016/05/15 面试题
人力资源专员自我评价怎么写
2013/09/19 职场文书
职业生涯规划书基本格式
2014/01/06 职场文书
报关报检委托书
2014/04/08 职场文书
接待员岗位职责
2015/02/13 职场文书
军训后的感想
2015/08/07 职场文书
Go各时间字符串使用解析
2021/04/02 Golang
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python