详解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给input和textarea设定ie中的focus
May 29 Javascript
Node.js实战 建立简单的Web服务器
Mar 08 Javascript
再谈querySelector和querySelectorAll的区别与联系
Apr 20 Javascript
Angularjs 滚动加载更多数据
Mar 17 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
Jun 20 Javascript
Canvas 制作动态进度加载水球详解及实例代码
Dec 09 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
Feb 17 Javascript
深入理解vue路由的使用
Mar 24 Javascript
vue+axios+mock.js环境搭建的方法步骤
Aug 28 Javascript
vue form 表单提交后刷新页面的方法
Sep 04 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
Apr 17 Javascript
javascript sort()对数组中的元素进行排序详解
Oct 13 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结合表单实现一些简单功能的例子
2011/06/04 PHP
PHP数组实例总结与说明
2011/08/23 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
浅谈PHP中静态方法和非静态方法的相互调用
2016/10/04 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
Javascript MD4
2006/12/20 Javascript
学习YUI.Ext 第七天--关于View&amp;JSONView
2007/03/10 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
浅析vue深复制
2018/01/29 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
详解如何使用Python编写vim插件
2017/11/28 Python
Python实现七彩蟒蛇绘制实例代码
2018/01/16 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
解决Python中回文数和质数的问题
2019/11/24 Python
Django配置跨域并开发测试接口
2020/11/04 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
职业生涯规划书前言
2014/04/15 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
物业公司管理制度
2015/08/05 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android
使用@Value值注入及配置文件组件扫描
2021/07/09 Java/Android
浅析Python OpenCV三种滤镜效果
2022/04/11 Python