数组合并和对象合并的方法

数组合并

此处说明两种比较简单的方式:

  • concat实现

特点:不改变原数组,生成新数组。

  •  ES6的扩展运算符(...)实现:

特点:简洁。

缺点:两种方式都存在的问题是:没有过滤掉重复元素“4”。

扩展:过滤数组的重复元素实现。

let arr1=[1,2,3,4];
let arr2=[4,5,6,7,8];
// 需求:求arr1和arr2合并后的数组,不能有重复的元素。
let arr3=arr1.concat(arr2);
console.log('concat合并后',arr3);
let arr4=[...arr1, ...arr2];
console.log('用扩展运算符合并后',arr4);
// 过滤重复元素
/* Array.from() 方法对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例 */
let arr5=Array.from(new Set(arr4)); // 方式1
console.log('过滤重复元素后1',arr5);
let arr6=[...new Set(arr4)] // 方式2
console.log('过滤重复元素后2',arr6);
let arr7=arr4.filter((item, index,arr)=>{ // 方式3
    // 所有元素只存一次
    if(arr.indexOf(item)===index){
        return item;
    }
})
console.log('过滤重复元素后3',arr7);
let arr8=[] 
for(let i=0; i<arr4.length;i++){ // 方式4for循环
    // 只存第一次遍历到的元素
    if(arr8.indexOf(arr4[i])===-1){
        arr8.push(arr4[i])
    }
}
console.log('过滤重复元素后4',arr8);



结果: 

对象合并

  • for(let...in):结果是改变了没有被遍历的对象。
  • ES6扩展运算符(...
  • ES6的新增API:Object.assign(targetObj,obj1[,obj2,...])

它们感叹的特点是:如果有属性重复时,后者的属性值被采纳。

/* 对象合并*/
//1、 for(let...in){}
let obj1={
    name:'a',
    age:12
}
let obj2={
    sex:'男',
    class:'1',
    age:20,
}
for(let key in obj2){
    obj1[key]=obj2[key];
}
console.log('对象合并后1', obj1);

let obja={
    name:'a',
    age:12
}
let objb={
    sex:'男',
    class:'1',
    age:20,
}
//2、 ES6新的APIObject.assgin(obj1, obj2)
let newObj2=Object.assign(obja, objb)
console.log('对象合并后2', newObj2);

//3、ES6的扩展运算符: {...obj1, obj2}
let newObj3={...obja, ...objb};
console.log('对象合并后3', newObj3);

结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值