精华内容
下载资源
问答
  • 最近做项目重构,突然想到一直在用数组的各种遍历方法,却没有测试过它们速度,想到就做,于是就了今天文章,本文不涉及技术问题,只是记录下遍历数组各种方法的用时对比,代码如下:let arr = [];...

    最近做项目的重构,突然想到一直在用数组的各种遍历方法,却没有测试过它们的速度,想到就做,于是就有了今天的文章,本文不涉及技术问题,只是记录下遍历数组各种方法的用时对比,代码如下:

    let arr = [];
    for(let i = 0;i<10000000;i++){
      arr.push(Math.random()*1000);
    };复制代码

    首先我用for循环创建了一个长度1000000的随机数数组,接下来分别测试了各种遍历方法的用时

    console.log(Date.now())
    for(let i  = 0;i<arr.length;i++){  arr[i]++;
    }
    console.log(Date.now())复制代码

    普通for循环方法平均用时86.2毫秒

    console.log(Date.now())
    for(let i  = 0,len = arr.length;i<len;i++){
      arr[i]++;
    }
    console.log(Date.now())复制代码

    普通for循环优化版方法平均用时10.4毫秒

    console.log(Date.now())
    arr.forEach((item,index) => {
      item++;
    })
    console.log(Date.now())复制代码

    forEach方法平均用时147.2毫秒

    console.log(Date.now())
    arr.map((item,index) => {
      item++;
    })
    console.log(Date.now())复制代码

    map方法平均用时191.4毫秒

    console.log(Date.now())
    for(let i in arr){
      arr[i]++;
    }
    console.log(Date.now())复制代码

    for in方法平均用时3322.2毫秒

    console.log(Date.now())
    for(let item of arr){
      item++;
    }
    console.log(Date.now())复制代码

    for of方法平均用时158.8毫秒

    需注意的是本文所记录每种方法的用时因机器性能不同结果也会变化,本文意义在于各种遍历数组方法的速度对比

    如果有错误或者不严谨的地方,请给予指正,十分感谢!

    转载于:https://juejin.im/post/5cf8cadcf265da1b6720feca

    展开全文
  • 1.array_shift()将数组的第一个单元移出再返回,这对时候数组的第一个单元要单独处理很方便。 复制代码 代码如下:<? $tmparray = array(“1”, “2”, “3”, “4”); $tmparray = array_shift ($tmparray); ...
  • 一维数组复制常用有两种方法,一个为System.arraycopy(原数组,原数组复制起始位置,新数组,新数组复制起始位置,要复制长度),一个为Arrays.copyOf(原数组,要复制长度)方法,两者复制过程中都将创建新数组,...

    接下来对数组的复制,以及二维数组的知识进行整理。

    数组的复制

    一维数组的复制常用有两种方法,一个为System.arraycopy(原数组,原数组复制起始位置,新数组,新数组复制起始位置,要复制的长度),一个为Arrays.copyOf(原数组,要复制的长度)方法,两者复制的过程中都将创建新数组,下面记录一下。

    import java.util.Arrays;
    public class ArrayCopyDemo{
        public static void main(String[] args){
            //数组的复制
            int[] arr=new int[]{1,5,7,9,10,11,45};
            System.out.println("复制前的数组"+arr);
            //新数组
            int[] newArr=new int[3];
            //数组复制第一种
            System.arraycopy(arr,0,newArr,0,2);
            System.out.println(Arrays.toString(newArr));
            //数组复制的第二种方法,可以应用于扩容
            arr=Arrays.copyOf(arr,10);
            System.out.println("复制后的数组"+arr);
            System.out.println(Arrays.toString(arr));
        }
    }

    测试结果

    1486105-20190823082616692-110699201.png

    通过结果可以看出,第二种方法复制的arr,已经是一个新的数组,Arrays.copyOf方法底层调用了System.arraycopy()方法。

    二维数组

    存储一维数组的数组,数组元素是一维的。定义格式为:

    数据类型[][] 数组名=new 数据类型[一维数组的个数][一维数组的长度],可以类似用矩阵来理解,第一个参数代表行数,第二个参数代表列数。二维数组的定义有如下三种方式,注意二维数组不是在堆内存中开辟了一个矩阵区域,如arr1其定义了3*3的二维数组,刚开始是在堆内存中开辟了一块区域A,分为三份,每一份区域保存的是一个地址,这个地址指向一个一维数组,一维数组同样是在堆内存中的一个区域,其根据第二个参数,开辟对应的区域存储内容,因此内容是保存在一维数组里,3个一维数组的内存地址保存在区域A。

    import java.util.Arrays;
    public class TwoDimensonArrayDemo{
        public static void main(String[] args){
            //二维数组定义的三种方式
            //1 一次性定义一维数组数目,和一维数组大小
            int[][] arr1=new int[3][3];
            //遍历
            for(int i=0;i<arr1.length;i++){
                //打印每个一维数组
                System.out.println(arr1[i]);
            }
            //2 定义一维数组的数目,刚开始没有指定一维数组的大小,后面每行单独指定
            int[][]  arr2=new int[3][];
            arr2[0]=new int[6];
            arr2[1]=new int[2];
            arr2[2]=new int[3];
            //遍历
            for(int i=0;i<arr2.length;i++){
                //打印每个一维数组
                System.out.println(arr2[i]);
            }
            //3 定义数组时直接给定数组的内容
            int[][] arr3={{1,2},{4,5,6},{7,8,9,10}};
            //遍历
            for(int i=0;i<arr3.length;i++){
                //打印每个一维数组内容
                System.out.println(Arrays.toString(arr3[i]));
            }
        }
    }

    测试结果

    1486105-20190823082654094-1010999625.png

    二维数组应用

    现在使用二维数组打印一个杨辉三角,具体参考代码。

    import java.util.Scanner;
    public class YanghuiTriangle{
        public static void main(String[] args){
            //打印出杨辉三角到控制台-使用二维数组
            /**
            杨辉三角如下:
            1
            1 1
            1 2 1
            1 3 3 1
            1 4 6 4 1
            1 5 10 10 5 1
            */
            //可以看出杨辉三角的规律,如果用二维数组来看,就是除了每行首尾都是1外,其他位置元素:
            //arr[i][j]=arr[i-1][j]+arr[i-1][j-1]
            System.out.println("请输入杨辉三角行数");
            Scanner scan=new Scanner(System.in);
            //行
            int row=scan.nextInt();     
            //定义一个二维数组,行确定,列不确定
            int[][] triangle=new int[row][];
            for(int i=1;i<=row;i++){
                //初始化每一行一维数组的长度
                triangle[i-1]=new int[i];
                //确定内容  
                triangle[i-1][0]=1;//首
                triangle[i-1][triangle[i-1].length-1]=1;//尾
                for(int j=1;j<triangle[i-1].length-1;j++){
                    if(i!=1){
                        triangle[i-1][j]=triangle[i-2][j]+triangle[i-2][j-1];
                    }
                }
            }
            //打印出杨辉三角
            for(int[] piece:triangle){
                for(int i:piece){
                    System.out.print(i+"\t");//使用制表符,对齐数字
                }
                //换行
                System.out.println();
            }
        }
    }

    测试结果

    1486105-20190823082738179-799784788.png

    结论

    以上是数组的复制,以及二维数组相关的知识,记录一下。

    转载于:https://www.cnblogs.com/youngchaolin/p/11397485.html

    展开全文
  • as3中Array数组复制、数组清空的方法

    千次阅读 2009-08-01 15:38:00
    ActionSctipt中Array的复制方法常用有三种: 一、slice 此方法不改变原数组。 二、splice 此方法改变原数组。 三、用ByteArray实现深复制。前两者均为浅复制。 有意思是,使用splice用于数组清空时,第二个...

    ActionSctipt中Array的复制方法,常用有三种:

        一、slice 此方法不改变原数组。

        二、splice 此方法改变原数组。

        三、用ByteArray实现深复制。前两者均为浅复制。

       
    有意思的是,使用splice用于数组清空时,第二个参数可以不传递。实现代码如下:

       

      /**
        * 清空数组但不改变其地址
        *
        * @param arr 已分配内存地址的数组,不能为NULL
        *
        */

       public static function clear(arr : Array) : void
       {
               if( arr.length == 0 ) return;

     

               arr.splice(0);//arr.splice(0, arr.length);

               return;
       }

      
    flex sdk中,Array.splice定义为:

      

       在mx.core.UIComponent中也用到了Array.splice,只传递了startIndex,用于清空数组。

       总结:Array.splice在清空数组时,只需传递startIndex。如果不删除所有元素,再传递deleteCount参数。     
       splice还具有先删除后添加的功能,即先删除几个元素,然后在删除的位置再添加若干元素,删除与添加的元素的个数没有必须相等,这时侯deleteCount也是要用到的。

    展开全文
  • 数组复制一维数组复制常用有两种方法,一个为System.arraycopy(原数组,原数组复制起始位置,新数组,新数组复制起始位置,要复制长度),一个为Arrays.copyOf(原数组,要复制长度)方法,两者复制过程中都将创建...

    接下来对数组的复制,以及二维数组的知识进行整理。

    数组的复制

    一维数组的复制常用有两种方法,一个为System.arraycopy(原数组,原数组复制起始位置,新数组,新数组复制起始位置,要复制的长度),一个为Arrays.copyOf(原数组,要复制的长度)方法,两者复制的过程中都将创建新数组,下面记录一下。

    import java.util.Arrays;

    public class ArrayCopyDemo{

    public static void main(String[] args){

    //数组的复制

    int[] arr=new int[]{1,5,7,9,10,11,45};

    System.out.println("复制前的数组"+arr);

    //新数组

    int[] newArr=new int[3];

    //数组复制第一种

    System.arraycopy(arr,0,newArr,0,2);

    System.out.println(Arrays.toString(newArr));

    //数组复制的第二种方法,可以应用于扩容

    arr=Arrays.copyOf(arr,10);

    System.out.println("复制后的数组"+arr);

    System.out.println(Arrays.toString(arr));

    }

    }

    测试结果

    02342b4156837f38493513112f9b686f.png

    通过结果可以看出,第二种方法复制的arr,已经是一个新的数组,Arrays.copyOf方法底层调用了System.arraycopy()方法。

    二维数组

    存储一维数组的数组,数组元素是一维的。定义格式为:

    数据类型[][] 数组名=new 数据类型[一维数组的个数][一维数组的长度],可以类似用矩阵来理解,第一个参数代表行数,第二个参数代表列数。二维数组的定义有如下三种方式,注意二维数组不是在堆内存中开辟了一个矩阵区域,如arr1其定义了3*3的二维数组,刚开始是在堆内存中开辟了一块区域A,分为三份,每一份区域保存的是一个地址,这个地址指向一个一维数组,一维数组同样是在堆内存中的一个区域,其根据第二个参数,开辟对应的区域存储内容,因此内容是保存在一维数组里,3个一维数组的内存地址保存在区域A。

    import java.util.Arrays;

    public class TwoDimensonArrayDemo{

    public static void main(String[] args){

    //二维数组定义的三种方式

    //1 一次性定义一维数组数目,和一维数组大小

    int[][] arr1=new int[3][3];

    //遍历

    for(int i=0;i

    //打印每个一维数组

    System.out.println(arr1[i]);

    }

    //2 定义一维数组的数目,刚开始没有指定一维数组的大小,后面每行单独指定

    int[][] arr2=new int[3][];

    arr2[0]=new int[6];

    arr2[1]=new int[2];

    arr2[2]=new int[3];

    //遍历

    for(int i=0;i

    //打印每个一维数组

    System.out.println(arr2[i]);

    }

    //3 定义数组时直接给定数组的内容

    int[][] arr3={{1,2},{4,5,6},{7,8,9,10}};

    //遍历

    for(int i=0;i

    //打印每个一维数组内容

    System.out.println(Arrays.toString(arr3[i]));

    }

    }

    }

    测试结果

    86c70209c455f3a116cf59375c2c179e.png

    二维数组应用

    现在使用二维数组打印一个杨辉三角,具体参考代码。

    import java.util.Scanner;

    public class YanghuiTriangle{

    public static void main(String[] args){

    //打印出杨辉三角到控制台-使用二维数组

    /**

    杨辉三角如下:

    1

    1 1

    1 2 1

    1 3 3 1

    1 4 6 4 1

    1 5 10 10 5 1

    */

    //可以看出杨辉三角的规律,如果用二维数组来看,就是除了每行首尾都是1外,其他位置元素:

    //arr[i][j]=arr[i-1][j]+arr[i-1][j-1]

    System.out.println("请输入杨辉三角行数");

    Scanner scan=new Scanner(System.in);

    //行

    int row=scan.nextInt();

    //定义一个二维数组,行确定,列不确定

    int[][] triangle=new int[row][];

    for(int i=1;i<=row;i++){

    //初始化每一行一维数组的长度

    triangle[i-1]=new int[i];

    //确定内容

    triangle[i-1][0]=1;//首

    triangle[i-1][triangle[i-1].length-1]=1;//尾

    for(int j=1;j

    if(i!=1){

    triangle[i-1][j]=triangle[i-2][j]+triangle[i-2][j-1];

    }

    }

    }

    //打印出杨辉三角

    for(int[] piece:triangle){

    for(int i:piece){

    System.out.print(i+"\t");//使用制表符,对齐数字

    }

    //换行

    System.out.println();

    }

    }

    }

    测试结果

    00aa518848f80fa70cf3543e1f974ef4.png

    结论

    以上是数组的复制,以及二维数组相关的知识,记录一下。

    展开全文
  • ES6数组的常用方法

    2020-09-09 07:37:35
    ES6数组的常用方法: 1、Array.from( ):将对象或字符串转成数组,注意得length。 2、Array.of( ): 将一组值转换为数组。 3、copyWithin(target,start(可选),end(可选)):数组内数据的复制替换 target:从该...
  • 以下几种方法都是复制一个新对象或者数组,但是如果直接通过parent【iframe情况】方式去父窗口对象时候会问题,感兴趣朋友可以了解下
  • java数组很多好用的方法 如下 System.arrarycopy(目标数组,起始长度,复制到那个数组数组的起始长度,要复制多少个数); Arrays.sort(数组); 用于排序数组从小到大排序; Arrays.toString(a[i])将数组转换...
  • js合并数组的方法

    2019-10-23 14:00:52
    js数组合并两个常用方法,用法如下: var a=[1,2,3],b=[4,5,6]; 1.a.concat(b);//得到1,2,3,4,5,6; 1.1那个数组在前面合并后那个数组的元素就在前面 1.2 可以利用这个来复制一份数组,a.concat(a); 1.3 数组...
  • C#动态数组的常用方法

    万次阅读 2010-11-02 13:42:00
    C#数组很多值得学习的地方,这里我们主要介绍C#动态数组,包括介绍C#动态数组的常用属性等方面。 C#动态数组对象是较为复杂的数组。我们可以将它看为扩充了功能的数组,但ArrayList并不等同于数组,与...
  • C++常用动态数组方式

    2013-12-13 17:48:06
    为了节省内存,常常用动态数组方式来建立数组方法一般教科书上都,这里写下来,下次直接复制,可以偷点懒。 一维动态数组,用最多。 int n=100; int *array; array=new int[n];//建立了长度为100int ...
  •  ActionSctipt中Array的复制方法常用有三种: 一、slice 此方法不改变原数组。 二、splice 此方法改变原数组。 三、用ByteArray实现深复制。前两者均为浅复制。 有意思是,使用splice用于数组清空时,第二...
  • 一个数组先把原数组的每个值复制到一个新/另的数组,然后在新/另数组上进行操作,不会改变原数组的值。 如果参数不是数组,不管参数个数多少个,push()和concat()都会直接把参数添加到数组后;...
  • JavaScript中数组的复制

    2019-11-25 15:46:20
    以下是数组复制常用的一些方法,特定的场景利用的特定的方法,只是提供一些思路,更好的方法欢迎补充! <script> // 需求:复制过来的新数据和原来的数据没有任何关系; var arr = ["a", "b", "c", "d"]; ...
  • Java中的数组工具类ArraysArrays类是Java中提供的专门用于操作数组的一个工具类。Arrays类位于java.util包下,类中提供了可以用于数组的操作方法。1、toString()方法Arrays类重写了Object类的toString()方法,所以...
  • 首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型、字符串、甚至是...声明10个元素的数组 复制代码 代码如下: var a
  • ES6数组方法

    2020-09-08 17:09:22
    ES6数组的常用方法: 1、Array.from( ):将对象或字符串转成数组,注意得length。 2、Array.of( ): 将一组值转换为数组。 3、copyWithin(target,start(可选),end(可选)):数组内数据的复制替换 target:从该...
  • PHP中遍历数组三种常用的方法: 一、使用for语句循环遍历数组; 二、使用foreach语句遍历数组; 三、联合使用list()、each()和while循环遍历数组。 这三种方法中效率最高的是使用foreach语句遍历数组。从PHP4开始...
  • 其中我们常用的方法有三种:arraycopy(),copyOf()和copyOfRange()。 一、基本用法 1. arraycopy()方法 函数原型: arraycopy(Object src, int srcPos, Object dest, int destPos, int length) src: 原数组 ...
  • iOS数组常用的操作

    2013-12-20 17:50:46
    +(id)arrayWithArray:(NSArray*)anArray 从一个已有数组,类似复制另一个数组,可以把NSArray赋值给NSMutableArray +(id)arrayWithContentsofFile:(NSString*)aPath 读取文件,并根据文件内容创建数
  • package demo05System; import java.util.ArrayList;... 在system类的API文档中,常用的方法有: public static long currentTimeMillis() 返回以毫秒为单位的当前时间。 public static void array
  • 前面我们介绍了Array和Arrays类几个常用的方法,没有提到对象clone()方法和Arrays.copyOf(),关于拷贝,放到这篇来讨论。拷贝或者复制,一般是对象的引用的操作,三种方式来实现:直接赋值,浅拷贝,深拷贝。下面...
  • ECMAScript 为操作数组中的项提供了很多方法,其中最常用的有:concat( ) 、slice( ) 和 splice( ) 。 concat ( ) concat ( ) 方法可以基于当前数组中的项创建一个新的数组。具体来说,这个方法会先创建一个当前...
  • Javascript数组方法中,相比map、filter、forEach等常用的迭代方法,reduce常常被我们所忽略,今天一起来探究一下reduce在我们实战开发当中,能哪些妙用之处,下面从reduce语法开始介绍。 语法 array.reduce...
  • 常用的系统函数sort、asort、arsort、ksort、krsort等等,这里我主要说下对二维数组的排序,两种方法: 一、用PHP自带array_multisort函数排序 复制代码 代码如下:<?php  $data = array(); $da
  • .postbody{font-size:12px;} 数组的复制 /*一, 怎样... 最简单的方法是 循环这个数组, 把每一项都添加到新的数组中. 如果人给你出这样的题目, 那么这个回答应该不是对方想要的. Array.slice(start, [e...
  • 在php中数组定义方法有几种,我们下面来给大家介绍常用的几种php数组定义与赋值的实例方法,希望此文章对入门者有所帮助。先了解一下数组,数组就是把一组数据按顺序放在一起。PHP的数组和其它的语言数组有一点点...
  • 数组的常用方法 clear() 根据元素类型,设置某个范围元素为零、为false或者为null Copy(Array,Array,int32) 从数组的第一个元素开始复制某个范围元素到另一个数组的第一个长度。长度由一个32位整数指定 Copy...
  • 提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,在System类的API文档中,常用的方法有: public static long currentTimeMillis():返回以毫秒为单位的当前时间。 public static void arraycopy...
  • 其中System.Array类里面就提供了以下常用的方法:BinarySearch:使用二进制搜索算法在一维的排序Array中搜索值。Copy:将一个Array的一部分元素复制到另一个Array中,并根据需要执行类型强制转换和装箱。CopyTo:将...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 398
精华内容 159
关键字:

常用的数组复制方法有