• javaScript 数组的拷贝


    对,你没看错,这里就是数组的各种拷贝方法滴呀;

    //方法一:push
    //
    function copyArray(arr){
          var result=[];
          for(let i=0;i<arr.length;i++){
                result.push(arr[i]);
          }
          return arr;
    }
    
    
    //方法二:join方法,缺点:数组中的项将全部变成我们字符串形式滴呀;
    
    function copyArray(arr){
          var result=[];
          result=arr.join().split(',');
          return result;
    }
    
    
    //方法三;concat() 方法用于连接两个或多个数组。
    //该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
    //contract 的基本用法;
    
    var arr = new Array(3)
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    
    var arr2 = new Array(3)
    arr2[0] = "James"
    arr2[1] = "Adrew"
    arr2[2] = "Martin"
    
    var arr3 = new Array(2)
    arr3[0] = "William"
    arr3[1] = "Franklin"
    
    document.write(arr.concat(arr2,arr3))
    
    
    function copyArray(arr){
          var result=[];
          result=arr.concat();  //回被连接数组的一个副本
          return result;
    }
    
    
    //定义和用法
    //slice() 方法可从已有的数组中返回选定的元素。 基本的定义滴呀;
    //start     必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
    //end   可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素
    //请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
    
    
    //所以方法就是这样滴呀;
    function copyArray(arr){
          var result=[];
          result=arr.slice();
          return result;
    }
    
    //以上的方法都是简单的拷贝,由于js的数组是浅拷贝的方法;
    //而且它又是弱类型的语言,没有安全类型的检查;
    //我要拿到15-20k 的薪资,那才是我想要的基本,结果;
    function deepCopyArray(arr,result){
          let result= result || [];
          for(var i=0;i<arr.length;i++){
                if (arr[i] instanceof Array){
                      result[i]=[];//新的数组;
                      deepCopyArray(arr[i],result[i]);//递归继续拷贝;
    
                }else{
                      result[i]=arr[i];//直接复制;
                }
          }
          return result;
    }
    
    
    //顺便附带一下splice 方法的使用滴呀;
    //splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
    //注释:该方法会改变原始数组。
    
    //index     必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
    //howmany     必需。要删除的项目数量。如果设置为 0,则不会删除项目。
    //item1, ..., itemX 可选。向数组添加的新项目。
    
    //:请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
    var arr = new Array(6);
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    arr[3] = "James"
    arr[4] = "Adrew"
    arr[5] = "Martin"
    
    document.write(arr + "<br />")
    let result=arr.splice(2,0,"William")//不删除,删除原来的值,只是添加
    arr.splice(2,1,"William")//这样的话,就会删除我们的thomas;
    arr.splice(2,3,"William")// 我们将删除从 index 2 ("Thomas") 开始的三个元素,并添加一个新元素 ("William") 来替代被删除的元素
    document.write(arr + "<br />")
    console.log(result) //空的数组 []
  • 相关阅读:
    boost::asio在VS2008下的编译错误
    Java集合框架——接口
    ACM POJ 3981 字符串替换(简单题)
    ACM HDU 1042 N!(高精度计算阶乘)
    OneTwoThree (Uva)
    ACM POJ 3979 分数加减法(水题)
    ACM HDU 4004 The Frog's Games(2011ACM大连赛区第四题)
    Hexadecimal View (2011ACM亚洲大连赛区现场赛D题)
    ACM HDU 4002 Find the maximum(2011年大连赛区网络赛第二题)
    ACM HDU 4001 To Miss Our Children Time (2011ACM大连赛区网络赛)
  • 原文地址:https://www.cnblogs.com/mc67/p/6937848.html
Copyright © 2020-2023  润新知