JS基础——深浅拷贝
来源:互联网 发布:淘客群管软件 编辑:程序博客网 时间:2024/06/08 04:15
js的数据类型分为基本数据类型和引用数据类型,而只有后者存在深拷贝。
方法一
借用JSON.parse和JSON.stringify实现
const oldArr= [1, 2];
const newArr= JSON.parse(JSON.stringify(oldArr));
newArr.push(3);
console.log(oldArr); // [1, 2]
console.log(newArr); // [1, 2, 3]
但是,undefined、function、symbol 会在转换过程中被忽略,所以这些情况下不适用这种方法。
方法二
递归的思想就是对每一层的数据都实现一次 创建对象->对象赋值 的操作
function deepClone(source){ const targetObj = source.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象 for(let keys in source){ // 遍历目标 if(source.hasOwnProperty(keys)){ if(source[keys] && typeof source[keys] === 'object'){ // 如果值是对象,就递归一下 targetObj[keys] = source[keys].constructor === Array ? [] : {}; targetObj[keys] = deepClone(source[keys]); }else{ // 如果不是,就直接赋值 targetObj[keys] = source[keys]; } } } return targetObj;}
方法三
用数组和对象自带方法实现的都是首层深拷贝(concat, slice & Object.assign(), …)
参考链接内容
阅读全文
0 0
- JS基础——深浅拷贝
- js深浅拷贝
- js 深浅拷贝
- JS数组的深浅拷贝
- js对象的深浅拷贝
- js对象之深浅拷贝
- js 数组的深浅拷贝
- iOS基础之----深浅拷贝
- python——赋值与深浅拷贝
- python——赋值与深浅拷贝
- python——赋值与深浅拷贝
- js 数组对象的深浅拷贝
- JS进阶篇:数据的深浅拷贝
- 详解js中对象的深浅拷贝
- c++基础概念之深浅拷贝
- 黑马程序员——Foundation---深浅拷贝碎碎念
- C++深浅拷贝——实现String类
- Python高级编程——3.深浅拷贝
- 15算法课程 125. Valid Palindrome
- JDBC操作数据库的步骤
- 第九周-项目3
- IPU到底是个什么鬼?
- Spring源码解析——如何阅读源码
- JS基础——深浅拷贝
- SimpleDateFormat的坑
- STM8S 模拟I2C程序
- RabbitMQ 笔记一
- 第10周项目1-验证算法(1)层次遍历算法的验证
- 出栈顺序和卡特兰数的关系
- Kotlin系列课程——Kotlin初始化控件及界面跳转
- ThreadLocal应用场景以及源码分析
- 简单实现Tensorflow CNN图像训练