示例JS 数组和对象的深拷贝操作


本文摘自PHP中文网,作者coldplay.xixi,侵删。


本文实例讲述了JS 数组和对象的深拷贝操作。分享给大家供大家参考,具体如下:

一.数组的深拷贝

1

2

3

4

5

6

7

8

9

10

11

12

13

let arr = [

 undefined,

 function(){

  console.log(123);

 },

 true,

 null,

 {

  name:"123",

  age:23

 }

];

// arr作为拷贝对象

1. Array.from()

Array.from()能将一个类数组转化成一个真正的数组,因此它返回的是一个新数组。

1

2

3

4

let arr1 = Array.from(arr);

arr[0] = 2;

console.log(arr1);

// [ undefined, [Function], true, null, { name: '123', age: 23 } ]

2. Object.assign()

1

2

3

4

let arr1 = Object.assign([], arr)

arr[0] = 2;

console.log(arr1);

// [ undefined, [Function], true, null, { name: '123', age: 23 } ]

此方法也可用作对象的深拷贝

3. Slice()

1

2

3

4

let arr1 = arr.slice(0);

arr[0] = 2;

console.log(arr1);

// [ undefined, [Function], true, null, { name: '123', age: 23 } ]

4. Concat()

1

2

3

4

let arr1 = arr.concat();

arr[0] = 2;

console.log(arr1);

// [ undefined, [Function], true, null, { name: '123', age: 23 } ]

5. 扩展运算符深拷贝

1

2

3

4

5

// let [...arr1] = arr; // 这两种都可以

let arr1 = [...arr];

arr[0] = 2;

console.log(arr1);

// [ undefined, [Function], true, null, { name: '123', age: 23 } ]

此方法也可用作对象的深拷贝

二.对象的深拷贝

1

2

3

4

5

6

7

8

9

10

11

12

13

14

let obj = {

 name: "a",

 age: 20,

 sex: false,

 user: {

  a: 20,

  n: "b"

 },

 f: function(){

  return 1;

 },

 u: undefined,

 n: null

}

用扩展运算符和Object.assign()方法可以深拷贝对象

1

2

3

4

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}

相关学习推荐:javascript视频教程

以上就是示例JS 数组和对象的深拷贝操作的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

js中数组的迭代方法:filter、reduce、every、some

js 中使用类似 php 的魔术方法

js如何控制css

html如何引入js文件

javascript如何自动关闭窗口

js 判断值是否为数字

如何使用js控制下拉列表左右选择

jquery easyui收费的么

js快速求出三角形面积

vue中computed和watch的用法及区别

更多相关阅读请进入《js》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...