一、数组的合并
1、可以用concat连接
var arr=[1,2,3];
var arr1=[4,5,6,7];
var arr2=arr.concat(arr1);
console.log(arr); //[1,2,3]
console.log(arr1); //[4,5,6,7,8]
console.log(arr2); //[1,2,3,4,5,6,7,8]
可见,concat并不会改变数组arr。
2、如果想要将arr1连接到arr并保存到arr中,可以用Array.protoType.push.apply(arr,arr1); 也可以使用ES6中的拆包语法进行push--arr.push(...arr1);
var arr=[1,2,3];
var arr1=[4,5,6,7,8];
Array.prototype.push.apply(arr,arr1);
console.log(arr); //[1,2,3,4,5,6,7,8]
var arr=[1,2,3];
var arr1=[4,5,6,7,8];
arr.push(...arr1);
console.log(arr); //[1,2,3,4,5,6,7,8]
二、对象的合并
1、可以用jquery的extend,$.extend(obj1,obj2)会把两个对象合并赋值给第一个对象,$.extend({},obj1,obj2)会把两个对象合并并赋值给一个空的新对象,不会改变原有对象。
//赋值给第一个对象
var obj1={a:1,b:2};
var obj2={c:3,d:4};
var hebing=$.extend(obj1,obj2);
console.log(obj2); //{c:3,d:4}
console.log(obj1); //{a:1,b:2,c:3,d:4}
console.log(hebing); //{a:1,b:2,c:3,d:4}
//赋值给一个新对象
var obj1={a:1,b:2};
var obj2={c:3,d:4};
var hebing=$.extend({},obj1,obj2);
console.log(obj2); //{c:3,d:4}
console.log(obj1); //{a:1,b:2}
console.log(hebing); //{a:1,b:2,c:3,d:4}
2、可以用Object.assign(),可以把任意多个源对象的可枚举属性拷贝给目标对象,并返回目标对象,用法类似于$.extend
//赋值给第一个对象
var obj1={a:1,b:2};
var obj2={c:3,d:4};
var hebing=Object.assign(obj1,obj2);
console.log(obj2); //{c:3,d:4}
console.log(obj1); //{a:1,b:2,c:3,d:4}
console.log(hebing); //{a:1,b:2,c:3,d:4}
//赋值给一个新对象
var obj1={a:1,b:2};
var obj2={c:3,d:4};
var hebing=Object.assign({},obj1,obj2);
console.log(obj2); //{c:3,d:4}
console.log(obj1); //{a:1,b:2}
console.log(hebing); //{a:1,b:2,c:3,d:4}
3、可以使用遍历的方式
var obj1={a:1,b:2};
var obj2={c:3,d:4};
for(var key in obj2){
if(obj2.hasOwnProperty(key)===true){
//此处hasOwnProperty是判断自有属性,使用 for in 循环遍历对象的属性时,原型链上的所有属性
//都将被访问会避免原型对象扩展带来的干扰
obj1[key]=obj2[key];
}
}