js中陣列深拷貝和排序

2021-09-24 21:29:07 字數 799 閱讀 9442

首先解決第乙個問題:

& 問題一: 陣列b根據陣列a變化,但是不可以修改a陣列

概念:1.淺拷貝: 將原物件或原陣列的引用直接賦給新物件,新陣列,新物件/陣列只是原物件的乙個引用

2.深拷貝: 建立乙個新的物件和陣列,將原物件的各項屬性的「值」(陣列的所有元素)拷貝過來,是「值」而不是「引用」

這裡採用深拷貝的方法  js實現陣列深拷貝的方法 slice, concat

js陣列深拷貝實現:

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]

& 問題二: 陣列b根據陣列c排序

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...