详解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 写类方式之八
Jul 05 Javascript
Mootools 1.2教程(3) 数组使用简介
Sep 14 Javascript
JS代码放在head和body中的区别分析
Dec 01 Javascript
JavaScript数据类型判定的总结笔记
Jul 31 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
Dec 24 Javascript
盘点javascript 正则表达式中 中括号的【坑】
Mar 16 Javascript
Bootstrap整体框架之JavaScript插件架构
Dec 15 Javascript
Angular2安装angular-cli
May 21 Javascript
node中的cookie的具体使用
Sep 13 Javascript
Three.js中矩阵和向量的使用教程
Mar 19 Javascript
详解从vue-loader源码分析CSS Scoped的实现
Sep 23 Javascript
jquery中attr、prop、data区别与用法分析
Sep 25 jQuery
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使用array_fill定义多维数组的方法
2015/03/18 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
简单通用的JS滑动门代码
2008/12/19 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
nodejs实现HTTPS发起POST请求
2015/04/23 NodeJs
JavaScript中setMonth()方法的使用详解
2015/06/11 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
Python编程之string相关操作实例详解
2017/07/22 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
python set内置函数的具体使用
2019/07/02 Python
Python中关于浮点数的冷知识
2019/09/22 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
基于CSS3制作立体效果导航菜单
2016/01/12 HTML / CSS
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
纬创Java面试题笔试题
2014/10/02 面试题
体操比赛口号
2014/06/10 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL