详解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对象的代码分享
Nov 02 Javascript
JavaScript移除数组元素减少长度的方法
Sep 05 Javascript
仿百度的关键词匹配搜索示例
Sep 25 Javascript
jQuery 隐藏和显示 input 默认值示例
Jun 03 Javascript
使用jquery prev()方法找到同级的前一个元素
Jul 11 Javascript
jquery插件Jplayer使用方法简析
Apr 22 Javascript
很棒的js选项卡切换效果
Jul 15 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
Mar 04 Javascript
ES6中Array.find()和findIndex()函数的用法详解
Sep 16 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
Nov 11 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
Nov 10 Javascript
详解React路由传参方法汇总记录
Nov 29 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对字符串的递增运算分析
2010/08/08 PHP
php中随机显示图片的函数代码
2011/06/23 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
php原生数据库分页的代码实例
2019/02/18 PHP
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
jQuery实现首页顶部可伸缩广告特效代码
2015/04/15 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
单利模式及python实现方式详解
2018/03/20 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
python爬取天气数据的实例详解
2020/11/20 Python
人事部主管岗位职责
2013/12/26 职场文书
2014年建筑工作总结
2014/11/26 职场文书
2015年维修工作总结
2015/04/25 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
学校2015年纠风工作总结
2015/05/15 职场文书
博物馆观后感
2015/06/05 职场文书
员工给公司的建议书
2019/06/24 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android
vue 自定义组件添加原生事件
2022/04/21 Vue.js