详解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 相关文章推荐
使用原生javascript创建通用表单验证——更锋利的使用dom对象
Sep 13 Javascript
js通过location.search来获取页面传来的参数
Sep 11 Javascript
AngularJS内置指令
Feb 04 Javascript
学习使用bootstrap基本控件(table、form、button)
Apr 12 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
Apr 29 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
Jul 09 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
Aug 19 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
Dec 14 Javascript
关于Angular2 + node接口调试的解决方案
May 28 Javascript
浅谈Angular6的服务和依赖注入
Jun 27 Javascript
详解vue几种主动刷新的方法总结
Feb 19 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
May 27 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
截获网站title标签之家内容的例子
2006/10/09 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
coreseek 搜索英文的问题详解
2013/06/08 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
jquery form 隐藏的input 选择
2014/04/29 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
Js的Array数组对象详解
2016/02/22 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
Python算法之图的遍历
2017/11/16 Python
python存储16bit和32bit图像的实例
2018/12/05 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
python学生管理系统的实现
2020/04/05 Python
python实现飞船大战
2020/04/24 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
优秀毕业生求职推荐信范文
2013/11/21 职场文书
冰淇淋开店创业计划书
2014/02/01 职场文书
大学生毕业求职自荐书范文
2014/02/04 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
数控机床专业自荐信
2014/05/19 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
教师网络培训心得体会
2016/01/09 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers
Mysql开启外网访问
2022/05/15 MySQL