vue|js-数组/对象深度复制的方法
【vue|js-数组/对象深度复制的方法】对象、数组,这类元素在电脑中其实是以指针形式(也就是一个地址)保存,所以浅复制(var a = {};
var b = a;
)会使得修改 b 时 a 也随之改变(因为两者是引用同一个对象的地址)。
所以复制时为了不修改原对象/数组,就需要深度复制。一般是向内递归到不再是数组对象再复制(因为字符串数字这类就是直接存储、没有深浅复制的区别)。
记录一下自己的常用方法(格式是从vue项目里拿的,用的es6;
es5就’let’换’var’):
//深度复制对象
cloneObj(obj) {
let newObj = {};
if (typeof obj === 'object') {//数组或对象
if (obj instanceof Array) {
newObj = [];
}
for (var key in obj) {
let val = obj[key];
newObj[key] = (typeof val === 'object') ? this.cloneObj(val) : val;
}
return newObj;
} else {
return obj;
}
},
推荐阅读
- vue-cli|vue-cli 3.x vue.config.js 配置
- 2020-04-07vue中Axios的封装和API接口的管理
- 数组常用方法一
- Java|Java基础——数组
- VueX--VUE核心插件
- JS常见数组操作补充
- vue组件中为何data必须是一个函数()
- 用npm发布一个包的教程并编写一个vue的插件发布
- vuex|vuex 基础结构
- Vue源码分析—响应式原理(二)