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);
  • 相关阅读:
    Ms.office2010安装教程
    Hadoop开发第3期---Hadoop的伪分布式安装
    Linux随笔---tar命令
    Hadoop开发第2期---虚拟机中搭建Linux
    appium(8)-locator strategies
    appium(7)-Automating mobile gestures
    appium(3)-Running Tests
    appium(4)-Automating mobile web apps
    appium(5)-Appium capabilities
    appium(2)-Setting up Appium
  • 原文地址:https://www.cnblogs.com/yesu/p/8657438.html
Copyright © 2011-2022 走看看