js 数组的深浅拷贝
来源:互联网 发布:淘宝 中国质造 编辑:程序博客网 时间:2024/05/23 01:23
数组的浅拷贝与深拷贝
浅拷贝只复制第一层,深拷贝全部复制
浅拷贝:
// es6const arr1 = [1, 2, 3, [4, 5, 6]];const [...arr2] = arr1;// es5 var arr1 = [1, 2, 3, [4, 5, 6]];var arr2 = arr1.slice();arr2.push(7);arr2[3].push(7);arr1 // [1, 2, 3, [4, 5, 6, 7]];arr2 // [1, 2, 3, [4, 5, 6, 7], 7];
深拷贝(需使用递归):
const arrayDeep = (targetArray) => { const array = []; targetArray.map(item => { if(Object.prototype.toString.call(item) === '[object Object]') { const obj = {}; for(let i in item) { obj[i] = item[i]; // 对象属性为数组 if(Object.prototype.toString.call(item[i]) === '[object Array]') { obj[i] = arrayDeep(item[i]); } } array.push(obj); }else if(Object.prototype.toString.call(item) === '[object Array]') { //多维数组,递归 array.push(arrayDeep(item)); }else { array.push(item); } }); return array;}const arrays = [{a: 2}, {b: 5, child:[{c: 3}, {d: 4}]}, {f:7}, "333", 5, ['wqfe', {e:7}]];const arr = arrayDeep(arrays);arr[5][1].e = 5;console.log(arr[5][1].e); //5console.log(arrays[5][1].e); //7
阅读全文
0 0
- JS数组的深浅拷贝
- js 数组的深浅拷贝
- js 数组对象的深浅拷贝
- 数组的深浅拷贝
- IOS数组的深浅拷贝
- javascript 数组的深浅拷贝
- js对象的深浅拷贝
- 对象和数组的深浅拷贝
- 实现数组和对象的深浅拷贝
- JS进阶篇:数据的深浅拷贝
- 详解js中对象的深浅拷贝
- js深浅拷贝
- js 深浅拷贝
- ArrayList的深浅拷贝。
- 深浅拷贝的理解
- 深浅的拷贝
- 对象的深浅拷贝
- js对象之深浅拷贝
- udig设置样式在Geoserver使用出现汉字乱码问题
- Byte-of-python笔记代码3:Object.py
- 基于以太坊的联盟链?Quorum机制初探(上)
- 文件路径(相对、绝对路)、项目设置中的使用
- Android的简单的广播的例子
- js 数组的深浅拷贝
- 使用webpack打包脚本文件
- Java多线程编程-(1)-线程安全和锁Synchronized概念
- springBoot 定制HTTP消息转换器 返回对象只为null或者空值的字段处理
- maven setting 阿里仓库
- listview条目未满全屏时,button在listviwe下方,条目超过屏幕时,button在屏幕底端
- CMake/Tutorials/Exporting and Importing Targets
- IDEA中Spring Boot项目MyBaits提示Invalid bound statement (not found)错误
- 1.JAVA 基本算法:冒泡排序法--详讲