文档章节

javascript 深度拷贝

强超
 强超
发布于 2017/07/21 16:18
字数 117
阅读 3
收藏 0
js
    // 深度拷贝Array
    var deepCopyArray = function(sourceArray){
        let target = [];
        for (let i = 0; i<sourceArray.length; i++) {
            if (judgeisArrayOrObject(sourceArray[i]) == 'array') {
                target.push(deepCopyArray(sourceArray[i]))
            } else if (judgeisArrayOrObject(sourceArray[i]) == 'object') {
                target.push(deepCopyObject(sourceArray[i]));
            } else {
                target.push(sourceArray[i]);
            }
        }
        return target;
    }
    
    // 深度拷贝Object
    var deepCopyObject = function(sourceObj){
        let obj = {};
        for (let key in sourceObj) {
            if (judgeisArrayOrObject(sourceObj[key]) == 'object') {
                obj[key] = sourceObj[key] ? deepCopyObject(sourceObj[key]) : null;
            } else if (judgeisArrayOrObject(sourceObj[key]) == 'array') {
                obj[key] = deepCopyArray(sourceObj[key]);
            } else {
                obj[key] = sourceObj[key];
            }
        }
        return obj
    }
    
    // 判断是对象类型
    var judgeisArrayOrObject = function(source) {
        if (typeof source == 'object' && Array.isArray(source)) {
            return 'array'
        }
        return typeof(source)
    }

 

© 著作权归作者所有

上一篇: MYSQL 笔记
强超
粉丝 1
博文 13
码字总数 4017
作品 0
上海
后端工程师
私信 提问
WEB前端学习JavaScript知识点:说清楚深拷贝和浅拷贝的区别

Web前端开发工程师是一个很新的职业,是从事Web前端开发工作的工程师。主要进行网站开发,优化,完善的工作。网页制作是Web 1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行...

web前端小辰
2018/05/28
0
0
ES6之Spread Operater拷贝对象

译者按: 对象拷贝和合并使用展开运算符(Spread Operator)很方便! 原文: Master Javascript’s New, Cutting-Edge Object Spread Operator 译者: Fundebug 为了保证可读性,本文采用意译而非...

Fundebug
2017/07/20
0
0
javascript中对数组对象的深度拷贝

在前端开发的某些逻辑中,经常需要对现有的js对象创建副本,避免污染原始数据的情况。 如果是简单的一维数组对象,可以使用两个原生方法: 1、splice var arr1 = ['a', 'b', 'c'];var arr2 ...

netwild
2018/05/13
0
0
Eclipse去除JavaScript验证错误

第一步: 去除eclipse的JS验证: window->preference->Java Script->Validator->Errors/Warnings->Enable Javascript Sematic validation前面的钩子去掉; 第二步: 找到项目目录,去掉项目目......

chaun
2015/07/31
0
0
ArcGIS API for Javascript 2.X 离线部署(以2.6为例)

先在官网上ArcGIS API for JavaScript download page(需要有账户)下载最新的API:arcgisjsv26_api.zip( 点击直接下载)和 SDK: arcgisjsv26_sdk.zip(直接下载); 2. 将下载下来的 arcg...

回忆在昨天
2012/10/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一个简单易用的Linux文本编辑器:nano的安装与使用

许多状况下咱们都必要编纂云主机里的文本情节,而现时用的比力多的文本编纂器是vim,这个估量许多人都以为很难用,这边伏笔VPS引荐一个简略易用的文本编纂器nano,比vim简略许多,很轻易上手...

shzwork
29分钟前
3
0
go recover

异常、错误常见语言处理 一般语言都有其错误处理方式,就以鄙人熟悉的php来距离吧。 PHP有多个级别的错误处理方式,以防止程序在还未正确执行完毕时,就造成了程序的提前结束。 try/catch/fi...

o0无忧亦无怖
48分钟前
1
0
玩转混合云+边缘计算,且看ZStack Mini!

文章导读:2019年4月16日,ZStack新品和合作伙伴战略发布会上,面向集团客户和边缘场景需求,ZStack重磅推出ZStack Mini超融合一体机(以下简称:ZStack Mini)和ZStack多云管理平台(以下简...

ZStack社区版
49分钟前
2
0
springboot 整合redis

springboot整合redis官方是有文档的: 英文看不懂可以翻译,代码应该看得懂, 这个是自动注入的。当然也可以xml注入,手动配置。 整合步骤: pom文件: <!-- spring boot web --> ...

jason_kiss
53分钟前
2
0
手机耗电问题,大部分是没有正确使用这个“锁”

当安卓设备闲置时,设备很快会进入休眠状态,以达到省电和减少CPU占用的目的。但有些应用在手机灭屏甚至系统休眠时,依然频繁占用CPU处理事件或唤醒屏幕提示用户消息,这类行为会导致手机耗电...

安卓绿色联盟
54分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部