此处说明两种比较简单的方式:
特点:不改变原数组,生成新数组。
特点:简洁。

缺点:两种方式都存在的问题是:没有过滤掉重复元素“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
length;i++){ // 方式4for循环 - // 只存第一次遍历到的元素
- if(arr8.indexOf(arr4[i])===-1){
- arr8.push(arr4[i])
- }
- }
- console.log('过滤重复元素后4',arr8);
-
-
-
结果:

对象合并
它们感叹的特点是:如果有属性重复时,后者的属性值被采纳。
- /* 对象合并*/
- //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);
结果:
