zoukankan      html  css  js  c++  java
  • 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) //空的数组 []
  • 相关阅读:
    [atARC088F]Christmas Tree
    [atARC109F]1D Kingdom Builder
    [luogu4259]寻找车位
    [atARC087F]Squirrel Migration
    [atARC087E]Prefix-free Game
    [atARC110F]Esoswap
    [atARC110E]Shorten ABC
    [atARC084D]Small Multiple
    [atARC083F]Collecting Balls
    [hihocoder][Offer收割]编程练习赛49
  • 原文地址:https://www.cnblogs.com/mc67/p/6937848.html
Copyright © 2011-2022 走看看