5.2 数组类型

一.创建新数组

  i.var variable = new Array(); variable=["","",""]; //先声明创建数组,再往里面添加元素

  ii.var variable=["","",""];         //直接创建数组并添加元素

二.length属性

  数组的length不是只读的,通过设置这个属性,可以从数组的末尾移除项或者添加新项。

  i.var colors=["green","red","purple"];

    colors.length=2;

    alert(colors[2]);    //undefined  因为规定数组长度只有2  所以colors[2]被移除。

  ii.var colors=["green","red","purple"];

     colors[colors.length]="blue";       //因为数组最后一项的索引是length-1,所以这样做可以在数组最后添加新项

三.检测数组

  i.instanceof操作符

   if (variable instanceof Array){}   //语法  variable instanceof variabletype ,若检测到变量为相应检测类型,则返回true ,但是问题在于它假定只有一个全局执行环境

  ii.Array.isArray()方法

   if (Array.isArray(variable)){}  //语法:Array.isArray(variable)

四.转换方法

  i.valueOf() 方法                                 //返回最适合该对象类型的原始值

  ii.toString()  方法                              //将该对象类型的原始值以字符串的形式返回

  iii.toLocaleString() 方法          //先对数组的每一个元素使用toLacaleString()方法,再以逗号分隔符将生成的字符串连接起来,形成一个新的字符串

  iv.join()   方法            //可以使用不同的分隔符来构建字符串  例如:variable.join("||") 会生成一个分隔符为 || 的数组

五.栈方法和队列方法

  i.push()  方法            //接收任意数量的参数,将他们逐个加到数组末尾,并返回 数组修改后的长度

      var animal=new Array();

      var number_=animal.push("Monkey","Dog");

      document.write(number_);       //2

  ii.pop()  方法            //从数组末端移除最后一项,减少数组的length值,然后返回移除的项

  iii.shift()方法                                  //移除数组的第一项,使数组长度减一,并返回被移除的项

  iv.unshift()方法            //能在数组前端添加任意个项,并返回数组 修改后的长度

六.重排序方法

  i.reverse()方法           //反转数组项的顺序

    var values=[1,2,3,4,5];

    values.reverse();

    alert(values);               //5,4,3,2,1

  ii.sort()方法  **        //按升序排列数组项

    语法:arrayobject.sort(sortby);

     参数可选,规定排序函数,必须是一个函数。

      a)若没有参数,则按照字符编码的顺序排列。

        var values=[1,5,15,11];

        values.sort();

        alert(values);      // 1,11,15,5

      b)若有参数,则为一个比较函数。比较函数:比较两个值,然后返回一个用于说明这两个值相对顺序的数值,函数应该有两个参数。

          若a小于b,排序后a在b之前,返回一个负值。

          若a大于b,排序后b在a之前,返回一个正值。

          若a等于b,返回数值0,不进行排序。

            function compare(value,value1)                  //这个函数适用于大多数数据类型

             {

               if(value<value1)

                  {

                    return -1;

                  }

               else if (value>value1)

                  {

                    return  1;

                  } 

               else 

                  {

                    retuen 0;

                  }

             }

            var values=[1,5,15,11];

            values.sort(compare);

            alert(values);                    // 1,5,11,15              

      对于数值类型或者其valueof()方法会返回数值类型的对象类型,可以使用如下的compare函数

            function compare(value,value1) {

              return value1-value;    }

七.操作方法

  i.concat()方法                  //基于当前数组的所有项创建一个新数组,具体方法是先创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末端,最后返回新构建的数组。

      var color=["red","green"];

      var color1=color.concat("blue",["black","white"]);

      alert(color1);       //red,green,blue,black,white

  ii.slice()方法                    //基于当前数组的一或多个项创建一个新数组,slice()方法可以接收一到二个参数,用于指定返回项的起始和结束位置。

               //只有一个参数,表示从数组的该位置到数组末端的所有项。如果有两个参数,该方法返回起始和结束位置之间的项--但不包括结束位置的项。

      var numBer=[1,2,3,4,5,6];

      var numBer1=numBer.slice(1,3);

      alert(numBer1);       //2,3

  iii.splice()方法                

    spiice()方法有三个参数,第一个参数表示指定位置,第二个参数表示从指定位置开始需要删除的项数,第三个参数表示在指定位置需要插入的项。

    splice()方法始终都会返回一个数组,该数组中包含从原数组中删除的项。

       使用这种方法的三种方式

        a)删除  删除任意数量的项,指定前两个参数

            value.splice(0,2)     //会删除value数组中的前两项

        b)插入 向指定位置插入任意数量的项,指定三个参数,第二个为0.

            value.splice(1,0,"red")    //会在value数组的第二项后面插入字符串"red".

        c)替换 向指定位置插入任意数量的项,同时删除任意数量的项。

            value.splice(1,1,"red")    //会将value数组里的第二项替换成字符串"red"

八.位置方法

  i.indexOf()方法       //接收两个参数:要查找的项和查找起点位置索引。

        var num=[1,2,3];

        alert(num.indexOf(2));   //1

  ii.lastIndexOf()方法    //与indexOf()方法相似,只不过是从后面往前面找。

九.迭代方法

    每个迭代方法接收两个参数:要在每一项上面运行的函数和该函数的作用域对象--影响this的值(可选的),传入这些方法中的函数会接收三个参数---***数组项的值,该项在数组中的位置,数组本身。

      i.every()方法:对数组中的每一项运行给定函数,若函数对每一项都返回true,则返回true。

            var num=[3,4,5,6,7];

            var end_num=num.every(function(item,index,array){return(item>2)});     //true

      ii.some()方法:对数组中的每一项运行给定函数,若函数对其中一项能返回true,则返回true。

      iii.filter()方法:对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。          // 可以用来查询某些符合条件的数组***

      iv.map()方法:对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

      v.forEach()方法:对数组中的每一项运行给定函数,没有返回值。  本质上与使用for循环迭代数组一样。

十.归并方法

    reduce()方法  和  reduceRight()方法    //会迭代数组的所有项,然后构建一个最终返回的值

      这两个方法都接收两个参数:一个在每一项上调用的函数和作为归并基础的初始值(可选的)。其中的函数接收4个参数:前一个值,当前值,项的索引,数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。

      reduceRight()方法是从后开始遍历数组。

          /*使用reduce()方法求数组中所有值的值之和*/

          var values=[1,2,3,4,5];

          var sum=value.reduce(function(pre,cur,index,array){return pre+cur});

          alert(sum);    //15

 

        

          

    

  

    

 

   

       

 

  

posted @ 2017-05-26 18:43  独木舟h  阅读(138)  评论(0)    收藏  举报