zoukankan      html  css  js  c++  java
  • JavaScript数据结构--数组

    • ECMAScript数组的数据类型不单一
    • 数组的大小是可以动态调整

    创建数组的方式:

    1. Array构造函数

    var colors = new Array();
    //这里括号里可以填写数字表示数组长度length,也可以直接写入包含的项

    *new操作符是可以省略的哟

    2. 数组字面量

    var colors = ["red", "blue"];

    千万不要再数组字面量中写多余的逗号,在IE8-的版本中会增加一个undefined的数组项,而其他浏览器会忽略。

    *使用数组字面量表示法时,不会调用Array构造函数。

    数组的length属性:

    • colors[3] = “black" 这里如果索引超过了已有的长度,那么就会增加一个项;
    • length属性不是只读的,可以利用它删除末尾的一部分或者修改末尾元素;
    • 因为数组的索引从0开始,所以length总是指向最末尾(即末尾元素的索引是length-1)。

    1. 检测数组

    • instance of操作符:假定单一的全局执行环境。如果网页中有多个框架,多个版本的Array构造函数则会出现问题。
    • Array.isArray()方法:不管是在哪个全局环境创建的都可以,IE9+。

    2. 转换方法

    • toString()
    • valueOf()
    • toLocaleString()

    三个方法调用同一数组一般会返回同样的结果,即数组项以逗号连接成的字符串。不同的是valueOf()和toString()方法是对数组的每一项调用toString()方法(alert()也是同样),而toLocaleString()则是对数组的每一项调用toLocaleString()方法。

    • join()方法:使用不同的分隔符来构建字符串,默认值为逗号。

    *如果数组中某一项是null或undefined,那么在上述方法返回结果中以空字符串表示。

    3. 栈方法

    • 栈:是一种LIFO(Last-In-First-Out,后进先出)的数据结构。
    • push():接收任意数量的参数,把他们加到数组末尾,并返回修改后数组的长度
    • pop():从末尾移除一项,减少数组的length值,返回移除的项

    4. 队列方法

    • 队列:是一种FIFO(First-In-First-Out,先进先出)的数据结构。
    • shift():移除数组中的第一个项,并返回这个项
    • unshift():在数组前端加入任意个项,并返回新数组的长度

    由push()和shift()可以模拟队列。而unshift()和pop()可以模拟反向队列。

    5. 重排序方法

    • reverse():反转数组。
    • sort():默认按照升序排列数组项。调用每个数组项的toString()方法,比较得到的字符串。需要比较函数作为参数。

    比较函数:

    function compare(value1, value2){
        if (value1 < value2) {
            return -1;
        }else if (value1 > value2){
            return 1;
        }else {
            return 0;
        }
    }

    如果需要降序排列,将-1与1交换即可。

    *reverse()和sort()的返回值都是经过排序后的数组。如果只是要反转原来的数组,使用reverse()更快一点。

    *如果数组类型是数值或valueOf()方法会返回数值类型的对象类型,比较函数可以选取更加简单的:

    function compare (value1, value2) {
        return value1 - value2;
    }

    6. 操作方法

    • concat()方法:创建一个新数组,将收到的参数加到原数组的末尾
    • slice()方法:返回指定位置截取出的一个数组。只有一个参数即为该位到结尾(按照0开始),两个参数则第二参数为结尾元素(不包括,可以为负数)。
    • splice()方法:删除/插入/替换。第一个参数为开始位置,第二个参数为删除的数量,第三/四/······个为插入的数。返回删除的项组成的数组。

    7. 位置方法

    • indexOf():查找。接受两个参数,要查找的项和起点位置的索引(可选)。返回查找的项在数组中的位置,没有找到的情况下返回-1。
    • lastIndexOf():从数组的末尾往前找。

    *比较时使用的是全等操作符(要求严格相等)。

    8. 迭代方法

    ECMAScript定义了5个迭代方法,这些方法都接受两个参数,在每一项上运行的函数和(可选)运行该函数的作用域对象而传入的函数接受三个参数,数组项的值,该项在数组中的位置,数组对象本身。

    every() 函数对每一项都返回true,则返回true
    filter() 返回true的项组成的数组
    forEach() 无返回值
    map() 每次函数调用结果组成的数组
    some() 任一项返回true,则返回true

    9. 缩小方法

    reduce()reduceRight()是两个缩小方法,他们会迭代数组的所有项,然后构建一个最终的返回值。reduce()从第一项开始,reduceRight()从最后一项开始。

    这两个方法接收两个参数,一个在每一项上调用的函数和(可选)作为缩小基础的初始值

    这个函数接收四个参数(prev, cur, index, array)(前一个值,当前值,索引,数组对象)。

    第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数是数组的第二项。

  • 相关阅读:
    Openstack Swift 原理、架构与 API 介绍
    ReentrantLock 以及 AQS 实现原理
    AtomicInteger源码分析——基于CAS的乐观锁实
    深入浅出ThreadLocal
    Spring IOC的理解
    tomcat8 注册成服务后接sql数据失败
    Video.js 截图 Failed to execute 'drawImage' on 'CanvasRenderingContext2D'
    H5 播放Hls
    Video.js 源码浅析
    Hls流播放延时
  • 原文地址:https://www.cnblogs.com/hermionepeng/p/13204781.html
Copyright © 2011-2022 走看看