数组与数组间的合并:
var arr1=['a','b'];
var arr2=['c','d'];
arr1.concat(arr2);
//arr1=['a','b','c','d'];
对象与对象间的合并:
var obj1={'a':12,'b':'test'};
var obj2={'c':32,'a':3,'d':'name'};
function concatObj(obj1,obj2){
for(var item in obj2){
if(!obj1.hasOwnProperty(item) && obj2.hasOwnProperty(item)){
obj1[item]=obj2[item];
}else{
obj1[item]+=obj2[item]
}
}
}
concatObj(obj1,obj2);
// obj1={'a':15,'b':'test','c':32,'d':'name'}
数组与对象间的合并:
var arr=[];
var t={}; //临时对象,用于装特征标签
var obj={
o1:{'name':'zhangsan'},
o2:{'name':'lisi'}
}
function cancatArrWithObj(arr,obj){
for(var item in obj){ //遍历对象
if(!t[item]){ //判断当前对象的属性是否存在与临时对象t中
arr.push(obj[item]); //如果没存在,则把当前obj[item]属性值添加到数组中
t[item]=arr.length-1+''; //临时对象t[item]存储当前添加到数组的元素所在数组的索引值(string类型)
}else{ //如果临时对象中存在当前属性
var i=parseInt(t[item]); //取得当前属性在数组的索引值
arr[i]['name']+=obj[item]; //修改数组对应元素的值
}
}
}
数组排重(ES6)
var arr=[1,3,5,3,4,1,2,5];
var result=[...new Set(arr)];
//result [1, 3, 5, 4, 2]
对象合并(ES6)
var o1={a:1,b:2,c:3},
o2={b:4,d:5};
var obj=Object.assign({},o1,o2); //重复属性自动覆盖
//obj {a: 1, b: 4, c: 3, d: 5}