首先解決第乙個問題:
& 問題一: 陣列b根據陣列a變化,但是不可以修改a陣列概念:1.淺拷貝: 將原物件或原陣列的引用直接賦給新物件,新陣列,新物件/陣列只是原物件的乙個引用
2.深拷貝: 建立乙個新的物件和陣列,將原物件的各項屬性的「值」(陣列的所有元素)拷貝過來,是「值」而不是「引用」
這裡採用深拷貝的方法 js實現陣列深拷貝的方法 slice, concat
js陣列深拷貝實現:
& 問題二: 陣列b根據陣列c排序let a = [1,2,3,4];
//es5方法的陣列深拷貝
let b = a.slice();
let c = a.concat();
//es6方法 陣列深拷貝 const b = [...a];
b.push(5);
c.push(0);
console.log(a); //[1, 2, 3, 4]
console.log(b); //[1, 2, 3, 4, 5]
console.log(c); //[1, 2, 3, 4, 0]
let b = [1,4,3,2];
let c = [1,2,3,4,5,6,7];
let a = ;
for(let data1 of c)}}
console.log(a); //[1,2,3,4]
JS中實現陣列和物件的深拷貝和淺拷貝
陣列的深拷貝,兩層 var arr 1,2,3 4,5,6 7,8,9 var arr2 迴圈第一層陣列 for var i 0,len arr.length i console.log arr2 1,2,3,4,5,6,7,8,9 console.log arr arr2 false 陣列的淺拷貝...
js 中陣列或者物件的深拷貝和淺拷貝
淺拷貝 就是兩個js 物件指向同一塊記憶體位址,所以當obj1 obj2指向obj3的時候,一旦其中乙個改變,其他的便會改變!深拷貝 就是重新複製一塊記憶體,這樣就不會互相影響。有些時候我們定義乙個陣列,把這個資料賦值給跟多物件陣列中的乙個字段,當我們改變物件陣列中的該字段的時候,我們會把原來的陣列...
JS陣列和物件實現深拷貝
for 迴圈 for 迴圈 copy function copyfun arr return copyarr let arr1 1 2,3 4 let arr2 copyfun arr1 1,2,3,4 console.log arr2 1,2,3,4 arr2 0 10 console.log a...