js中陣列的合併和物件的合併
1 數組合並
1.1 concat 方法
1 2 3 4 |
|
1.2 迴圈遍歷
1 2 3 4 5 6 7 8 |
( var i=0;i<arr2.length;i++){
|
1.3 apply
合併陣列arr1和陣列arr2,使用Array.prototype.push.apply(arr1,arr2) or arr1.push.apply(arr1,arr2);
1 2 3 4 5 6 7 8 |
arr2=[ 'c' , 'd' , 'e' ];
|
2 物件合併
2.1 $.extend()
1 2 3 |
|
1 |
|
1 |
|
2.2 遍歷賦值
1 2 3 4 5 6 7 8 9 |
|
2.3 Obj.assign()
可以把任意多個的源物件自身的可列舉屬性拷貝給目標物件,然後返回目標物件。
Object.assign(target, ...sources)
1 2 3 |
|
1 2 3 4 5 6 7 |
|
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的影響