全部 ApiPost使用 后端 前端 接口测试 IOS Android 数据库 程序人生 测试技术 工具
问答 / 解决方案 / 解决方案详情

js数组如何复制,而且不影响之前的数组对象?

前端 20次浏览

大家知道,js对象的直接赋值是引用(指向同一个内存块)。新赋值的变量改变,原对象的值也会改变。如下:

var a=[1,2,3];
var b = a;
b[1]='ff';
console.log(a) //此时会打印出 [1, "ff", 3],而不是[1,2,3]。b的改变影响了a。

如何做到b的改变不影响a呢?

| 0 收藏

解决方案

1、数组的话,可以用slice()

要做到b的改变不影响a,简单的方法可以用 slice

var a=[1,2,3];
var b = a.slice(0);
b[1]='ff';
console.log(a) //此时会打印出 [1, 2, 3],而不是[1, "ff", 3]。b的改变没有影响到a。

2、非数组对象,可以将其序列化后再解析回来

var a={"name":"jim"};
var b = JSON.parse(JSON.stringify(a));
b.name='lucy';
console.log(a) //此时会打印出 {"name":"jim"},而不是{"name":"lucy"}。b的改变没有影响到a。

评论

开发者问答

只服务于

前后端、移动端、测试人员

发布解决方案 发布您遇到的Bug和解决方案,成为大神,让众人膜拜吧!