zoukankan      html  css  js  c++  java
  • js实现数组浅拷贝和深拷贝

    一、浅拷贝的实现方式

    方法一:通用循环

    function shallowCopy(obj) {
      if (typeof obj !== 'object') return;
    
      const newObj = obj instanceof Array ? [] : {};
    
      for(let key in obj) {
        if (obj.hasOwnProperty(key)) {
          newObj[key] = obj[key];
        }
      }
    
      return newObj;
    }

    以下方法,如果是单层数据,则可实现深拷贝的效果,如果是复杂多层数据,则为浅拷贝。

    方法二:Object.assign

    const newObj = Object.assign({}, oldObj);

    方法三:Array.slice

    const newArray = oldArray.slice();

    方法四:Array.concat

    方法四:Array.concat

    方法五:es6

    const { ...newObj } = oldObj;
    const [ ...newArray ] = oldArray;

    二、深拷贝的实现方式

    方法一:通用循环(递归)

    function deepCopy(obj) {
      if (typeof obj !== 'object') return;
    
      const newObj = obj instanceof Array ? [] : {};
    
      for(let key in obj) {
        if (obj.hasOwnProperty(key)) {
          newObj[key] = typeof obj === 'object' ? deepCopy(obj[key]) : obj[key];
        }
      }
    
      return newObj;
    }

    方法二:JSON.stringify,JSON.parse(不能拷贝函数)

    const newObj = JSON.parse(JSON.stringify(oldObj));
  • 相关阅读:
    tensorflow实践学习一
    计算CPU的MIPS
    计算机原理一
    SecureCRT连接虚拟机失败及虚拟机ping不通外网
    03.os
    02.random
    01.time
    01.面试过程中其他问题
    06.秒杀系统架构
    05.项目并发分析
  • 原文地址:https://www.cnblogs.com/art-poet/p/13652052.html
Copyright © 2011-2022 走看看