zoukankan      html  css  js  c++  java
  • 数组的拷贝

    如何对数组进行深拷贝

    我们一般常见的一个数组赋值给另外一个数组的方法,数据赋值的同时,引用地址也赋值过去了,一个数组改变,另外一个数组也改变。

    如果我们想要a数组赋值给b数组,并且他们之间的数据互不影响,这个时候就会接触到以下的浅拷贝数组的方法

    首先最常用的两种方法  slice()和contact( )方法

     var arr1=["1","2","3"],arr2;
        arr2=arr1.slice(0);
        arr1[0]=0; //改变arr1第一个元素
        alert("arr2[0]:"+arr2[0]);  //不影响arr2
        var arr3=["1","2","3"],arr4;
        arr4=arr3.concat();
        arr3[0]= 0;  //改变arr3第一个元素
        alert("arr4[0]:"+arr4[0]);  //不影响arr4

    注意: 浅拷贝只适用于简单的一位数组

    如果是二维数组或者带对象的数组,这两种方法则不起作用

    如果是上述的这种数组的拷贝,我们就会用到深拷贝,深拷贝的实现方法有很多种,比如递归方法等,但是最简单的一种方法就是利用jq提供的extend的方法

    var arr1 = [1, 2, [3, 4], {a: 5, b: 6}, 7],
    arr2 = $.extend(true, [], arr1);
    console.log(arr1, arr2);
    arr2[1] = 10;
    console.log(arr1, arr2);
    var arr1 = [1, 2, [3, 4], {a: 5, b: 6}, 7],
    arr2 = $.extend(true, [], arr1);
    console.log(arr1, arr2);
    arr2[1] = 10;
    console.log(arr1, arr2);
  • 相关阅读:
    23丨当Postgres磁盘读引起IO高的时候,应该怎么办
    22丨案例:当磁盘参数导致IO高的时候,应该怎么办
    LNMP环境搭建
    virtualbox中centos虚拟机网络配置
    chrome扩展程序开发
    Linux账号管理
    Linux设置文件与Shell操作环境
    Yii2之组件的注册与创建
    Stream 源码分析
    Exchanger 源码分析
  • 原文地址:https://www.cnblogs.com/yesu/p/8657438.html
Copyright © 2011-2022 走看看