美文网首页
JavaScript-Array类型

JavaScript-Array类型

作者: 婆娘漂亮生活安逸 | 来源:发表于2019-07-16 18:17 被阅读0次

    💡如果你是从BY这篇文章过来的,想要快速知道答案,直接拖到文章最后查看吧~

    简单介绍一下吧:
    数组类型,每一项可以存储任何类型的数据。
    例如:['abc', 100, true]

    1 检测数组


    • value instanceof Array
      对于一个网页或者一个全局作用域而言,可以很好的解决;但是如果网页中包含多个框架,实际就存在多个全局执行环境,从而存在多个不同版本的 Array 构造函数。
    • Array.isArray(value)
      ES5 中新增的方法,目的是最终确定某个值是不是数组,不用去管它在哪个全局环境。

    2 栈方法


    栈是一种 LIFO(Last-In-First-Out,后进先出)的数据结构,也就是最新添加的项最早被移除。而栈中项的插入(叫做推入)和移除(叫做弹出),只发生在一个位置-栈的顶部。
    • 😋push()
      接收任意数量的参数,返回修改后的原数组的长度。

    • 😋pop()
      不接受任何参数,从数据移除最后一项,返回移除项的值。

    3 队列方法


    队列数据结构的访问规则是 FIFO(First-In-First-Out,先进先出)。队列在列表的末端添加项,从列表的前端移除项。
    • 😋shift()
      不接受任何参数,移除数组中的第一项,并返回该项的值。

    • 😋unshift()
      接收任意长度的参数,返回修改后的数据长度。

    4 重排序方法


    • 😋reverse()
      反转数组项的顺序。

    • 😋sort()
      默认按照升序排列数组项,即从小到大。sort() 方法实现排序,会调用每个数组项的 toString() 方法,然后比较得到的字符串。因此我们可以得到,

      [0, 1 , 2, 5, 10, 15, 20].sort()
      
      // [0, 1, 10, 15, 2, 20, 5]
      

      解决方法:
      sort() 方法接收 比较函数 作为一个参数,以便我们指定哪些值位于哪些值前面。
      比较函数:接收两个参数,如果第一个参数位于第二个参数之前则返回负数,如果两个参数相等返回 0 ,如果第一个参数位于第二个参数后面则返回正数。

      var arr = [0, 1 , 2, 5, 10, 15, 20];
      
      function compare(a, b){
        if (a > b) {
          return -5;
        } else if (a === b) {
          return 0;
        } else if (a < b) {
          return 99;
        }
      }
      
      arr.sort(compare);
      
      // [20, 15, 10, 5, 2, 1, 0]
      

    5 操作方法

    • concat()
      将接收到的参数,添加到数组的副本末尾,最终返回拼接后的数组。

        let arr = [1, 2, 3];
        
        arr.concat('abc', false);    // [1, 2, 3, "abc", false]
        arr.concat([true, false, [555]])   // [1, 2, 3, true, false, [5]]
      
    • slice()
      该方法接收 1 个或 2 个参数,分别代表起始和结束位置;
      一个参数:返回该起始位置到数组末尾的所有项;
      两个参数:返回该起始位置到结束位置 (不包括结束位置)的所有项。
      💡如果传入的参数为负数,则代表从末尾开始定位

        let arr = ['first', 'second', 'third', 'fourth'];
        arr.slice(1);  // ['second', 'third', 'fouth'] ;
        arr.slice(1, 3); // ['second', 'third']
      
    • 😋splice()
      好啦~这应该是最强大的数组方法啦~主要有如下几种啊:

      1)删除

      可以删除任意数量的项,
      接收两个参数:index(代表第一项的位置),count(代表删除的项数)
      返回被删除的数组,原数组为删除后的数组。

         var arr= ['a', 'b', 'c', 'd', 'f'];
         arr.splice(-5, 1);     // ['a'],此时 arr 为 [ 'b', 'c', 'd', 'f']
      
      2)插入

      接收 (index, count, value1, value2, ....) 参数:index(代表起始位置),count(代表删除的项数),
      返回被删除的数组。

         var arr= ['a', 'd', 'f'];    
         arr.splice(1, 0, 'b', 'c');    // [],此时 arr 为 ['a', 'b', 'c', 'd', 'f'];
      
      3)替换

      其实用法同上,只是 count 数目 > 0,代表了从 index 开始删除 count 个数值。

        var arr= ['a', 'd', 'f'];
        arr.splice(1, 2, 'b', 'c');    // ['d', 'f'], 此时 arr 变成 ['a', 'b', 'c']
      

    6 位置方法


    接收两个参数:value(要查找的项),index(开始查找的起始位置,可选);
    如果找到返回索引位置,否则返回 -1;

    • indexOf()

    • lastIndexOf()

    7 迭代方法


    每个迭代方法接收两个参数:运行函数 和 运行该函数的作用域对象(影响 this 值,可选);

    运行函数,接收三个参数:value(数组值),index(索引),array(数组)

    • every()
      每一项都返回 true,则返回 true。
    • filter()
      返回运行函数返回true的项组成的数组。
    • forEach()
      无返回值,只是遍历操作。
    • map()
      返回运行函数的返回项组成的数组。
    • some()
      只要任意一项返回 true,则返回 true。

    8归并方法


    这两个方法都会迭代数组的所有项,然后构建一个最终的返回值。
    • reduce()
      接收4个参数:lastValue(前一个值),currentValue(当前值),index(索引),array(数组)
      第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项。

        var values = [1,2,3,4,5];
        var sum = values.reduce(function(prev, cur, index, array){
          return prev + cur;
        });
         //  sum 为 15;
      
    • reduceRight()
      作用同上,只不过是从数组末尾开始操作;
      第一次迭代应该发生在数组的倒数第二项,前一项为数组的最后一项。

    好啦~
    总结一下吧~
    改变原数组的方法有:栈方法,队列方法,重排序方法,splice() 方法。
    ps:会改变原数组的方法,都用 😋标注出来了。

    相关文章

      网友评论

          本文标题:JavaScript-Array类型

          本文链接:https://www.haomeiwen.com/subject/rwaakctx.html