美文网首页
JavaScript数组的拷贝

JavaScript数组的拷贝

作者: 段煜华 | 来源:发表于2020-01-13 19:40 被阅读0次

JavaScript中数组的常用操作之数组的拷贝

展开操作符

拷贝数组的一种简单方法是使用展开运算符:const clone = [... array],如下所示,拷贝 colors 数组:
此方法为浅拷贝(浅拷贝只解决了第一层的问题,如果值中还有对象的话就需要深拷贝)

const colors = ['white', 'black', 'gray'];
const clone = [...colors];
log(clone); // => ['white', 'black', 'gray']
log(colors === clone); // => false

Array.concat()方法

此方法为浅拷贝(浅拷贝只解决了第一层的问题,如果值中还有对象的话就需要深拷贝)

const colors = ['white', 'black', 'gray'];
const clone = [].concat(colors);
log(clone); // => ['white', 'black', 'gray']
log(colors === clone); // => false

Array.slice() 方法

此方法为浅拷贝(浅拷贝只解决了第一层的问题,如果值中还有对象的话就需要深拷贝)

const colors = ['white', 'black', 'gray'];
const clone = colors.slice();
log(clone); // => ['white', 'black', 'gray']
log(colors === clone); // => false

深拷贝

通常在es5中通过JSON.parse(JSON.stringify(object))来解决。

let a = {
 age: undefined,
 jobs: function() {},
 name: 'yck',
 obj:{
    a:0,
    b:1
  }
}
let b = JSON.parse(JSON.stringify(a))
console.log(b) // {name: "yck"}

细心点会发现该方法也是有局限性的:
• 会忽略 undefined
• 不能序列化函数
• 不能解决循环引用的对象

相关文章

  • 如何实现数组深拷贝和浅拷贝?

    如何实现数组深拷贝和浅拷贝? 1.背景介绍 在使用JavaScript对数组进行操作的时候,我们经常需要将数组进行...

  • javaScript数组的拷贝

    我们在对数据进行备份的时候,如果这个数据是基本的数据类型,那么很好办,通过赋值实现复制即可。如果在使用JavaSc...

  • JavaScript数组的拷贝

    JavaScript中数组的常用操作之数组的拷贝 展开操作符 拷贝数组的一种简单方法是使用展开运算符:const ...

  • JavaScript复制数组方式

    浅拷贝 这种数组拷贝方式就是浅拷贝,因为JavaScript存储对象都是存地址的,所以浅复制会导致 arr1 和 ...

  • 对象的深拷贝和浅拷贝

    数组的深浅拷贝 在使用JavaScript对数组进行操作的时候,我们经常需要将数组进行备份,事实证明如果只是简单的...

  • JS基础心法-深浅拷贝(首层浅拷贝)

    我们知道在 JavaScript 中,数组有两个方法 concat 和 slice 是可以实现对原数组的拷贝的,这...

  • js深拷贝和浅拷贝

    一、数组的深浅拷贝在使用JavaScript对数组进行操作的时候,我们经常需要将数组进行备份,事实证明如果只是简单...

  • 如何实现数组深拷贝和浅拷贝?

    如何实现数组深拷贝和浅拷贝? 1.背景介绍 javascript分原始类型与引用类型。Array是引用类型,直接用...

  • 关于几个拷贝的问题

    数组浅拷贝 数组深拷贝 复合数组深拷贝

  • web前端常见面试题

    面试常见问题总结 JavaScript 原型 数据存储 : 堆栈 深拷贝 数组去重 null undefined...

网友评论

      本文标题:JavaScript数组的拷贝

      本文链接:https://www.haomeiwen.com/subject/bxunactx.html