详解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 相关文章推荐
合并table相同单元格的jquery插件分享(很精简)
Jun 20 Javascript
js String对象中常用方法小结(字符串操作)
Jan 27 Javascript
使用jQuery插件创建常规模态窗口登陆效果
Aug 23 Javascript
jquery获取复选框被选中的值
Apr 10 Javascript
jQuery实现文本展开收缩特效
Jun 03 Javascript
jQuery异步提交表单的两种方式
Sep 13 Javascript
利用node.js实现反向代理的方法详解
Jul 24 Javascript
node.js中使用Export和Import的方法
Sep 18 Javascript
vue mint-ui学习笔记之picker的使用
Oct 11 Javascript
在微信小程序中使用图表的方法示例
Apr 25 Javascript
node.js中fs文件系统模块的使用方法实例详解
Feb 13 Javascript
深入理解webpack process.env.NODE_ENV配置
Feb 23 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下载远程文件类(支持断点续传)
2008/11/14 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
PHP命名空间(namespace)原理与用法详解
2019/12/11 PHP
js下弹出窗口的变通
2007/04/18 Javascript
新鲜出炉的js tips提示效果
2011/04/03 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
javascript多行字符串的简单实现方式
2015/05/04 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
一些高难度的SQL面试题
2016/11/29 面试题
上海某公司.net方向笔试题
2014/09/14 面试题
法学毕业生自荐信
2013/11/13 职场文书
集团公司总经理岗位职责
2013/12/20 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
教师工作总结范文2014
2014/11/10 职场文书
假期读书倡议书3篇
2019/08/19 职场文书