歡迎您光臨本站 註冊首頁

JS 數組和對象的深拷貝操作示例

←手機掃碼閱讀     bom485332 @ 2020-06-12 , reply:0

本文實例講述了JS 數組和對象的深拷貝操作。分享給大家供大家參考,具體如下:

一.數組的深拷貝

  let arr = [   undefined,   function(){    console.log(123);    },   true,   null,   {    name:"123",    age:23   }  ];  // arr作為拷貝對象

 

1. Array.from()

Array.from()能將一個類數組轉化成一個真正的數組,因此它返回的是一個新數組。

  let arr1 = Array.from(arr);  arr[0] = 2;  console.log(arr1);  // [ undefined, [Function], true, null, { name: '123', age: 23 } ]

 

2. Object.assign()

  let arr1 = Object.assign([], arr)  arr[0] = 2;  console.log(arr1);  // [ undefined, [Function], true, null, { name: '123', age: 23 } ]

 

此方法也可用作對象的深拷貝

3. Slice()

  let arr1 = arr.slice(0);  arr[0] = 2;  console.log(arr1);  // [ undefined, [Function], true, null, { name: '123', age: 23 } ]

 

4. Concat()

  let arr1 = arr.concat();  arr[0] = 2;  console.log(arr1);  // [ undefined, [Function], true, null, { name: '123', age: 23 } ]

 

5. 擴展運算符深拷貝

  // let [...arr1] = arr; // 這兩種都可以  let arr1 = [...arr];  arr[0] = 2;  console.log(arr1);  // [ undefined, [Function], true, null, { name: '123', age: 23 } ]

 

此方法也可用作對象的深拷貝

二.對象的深拷貝

  let obj = {   name: "a",   age: 20,   sex: false,   user: {    a: 20,    n: "b"   },   f: function(){    return 1;   },   u: undefined,   n: null  }

 

用擴展運算符和Object.assign()方法可以深拷貝對象

  let obj1 = Object.assign({}, obj)  obj[age] = 2;  console.log(obj1);  // let obj = { name: "a", age: 20, sex: false,user: {a: 20,n: "b},f: function(){return 1;},u: undefined,n: null}



[bom485332 ] JS 數組和對象的深拷貝操作示例已經有396次圍觀

http://coctec.com/docs/javascript/show-post-238253.html