js中Array对象的属性和方法总结

一:属性

  • length

length除了常见的读取数组的长度以外,也可以通过修改length的值来给数组增加或者删除元素,当length数值减少的时候,从数组末尾删除相应元素;增加的时候增加相应数量的元素,但是新增元素没有赋值的时候,初始值为undefined;

二:方法

检测数组

    if(obj instanceof Array){

      //执行对数组的操作  

    }

    但是这种方法有一个问题。当页面由框架组成的时候,不同的框架中的Window对象是不同的,而Array对象实际上是Window对象的一个属性,如果再frame中定义数组    的时候,这时候判断就会返回false。

    下面这种方法是ECMAScript5中新增,在IE9+,和较新的浏览器中实现的新方法

    if(Array.isArray(obj)){

      //执行对数组的操作

    }

    对没有实现该方法的浏览器,要准确检测数组,可以使用以下方法:(这个方法中尚有为理解的部分,稍后更新)  

  2. 转换方法

    toString() 、 toLocaleString() 

    执行这两种方法的时候,数组会为每一个元素执行这两种方法。得到的字符串以 , (逗号)分割每一个元素。

    join("|");

    使用join()方法可以选择各种分隔符,什么都不写,默认是 , 

    valueOf()   

  3. 栈方法

    栈的特点(last in first out),后进先出。

    push(value1,value2)方法模仿进,向数组的末端添加元素,可以多个;也可以使用arr[arr.length]=value;方法模仿进;

    arr.pop()方法模仿出,从数组末端读取元素,一次读取一个;

  4. 队列方法

    队列的特点(first in first out),先进先出

    同栈方法一样通过push()向数组末端添加元素;

    arr.shift();从数组的前端读取元素,一次读取一个;

    ECMAScript还提供了arr.unshift(value1,value2)方法,可以在数组前端添加若干个元素。

    所以各自有两种实现栈的方法和实现队列的方法;

    push(value1,value2)   pop()  后进先出   栈

    push(value1,value2)  shift()      先进先出  队列

    unshift(value1,value2) pop()       先进先出      队列

    unshift(value1,value2)    shift()     后进先出      栈

    以上方法中,添加元素返回的是,数组的新长度。但是unshift(value1,value2)在IE7(含)及以下版本中返回的是undefined;       

    读取元素,返回的是读取的元素,类型也如同元素。并且数组的长度减一;

  5. 重排序方法

    arr.reverse()反转,arr.sort()排序,默认按照ASCII码值排序。

    arr.sort()方法中可以传入一个代表比较规则的参数。例如:asc(升序),desc(降序),也可以自己定义名字,常见的还有compare;

    举例说明:

      function asc(value1,value2){

         if(value1<value2){

           return -1;

         }else if(value1 > value2){

           return 1;//这个地方只要是>0的数字,就交换两个数的顺序;

         }else{

           return 0;

         }

      }

          至于降序排列,可以将asc函数中的1和-1颠倒位置;

    如果说,数组中的元素都是数值类型的,则可以使用以下简写的规则。

    function compare(value1,value2){

      return value2 - value1;

    }

  6. 操作方法

    ① arr.concat(value1,value2)

    这个方法先创建一个数组的副本,然后将传入的参数添加到副本的末尾,如果参数中也有数组,就将该数组中的所有元素都添加进去;然后返回新数组;但是原来的数组    arr不发生变化;

     arr.sliice(3,7);

    这个方法读取该数组下标为3(含3)到7(不含7)之间的元素,组成新的数组返回。其中,7可以省略,则返回的是3到末尾的所有元素。原来的数组不发生变化。

    arr.slice(-3,-1);

    当slice方法中传入的是负值的时候,从数组的末端开始读取,最后一个是-1,然后依次递减。跟正值一样-1也可以省略,然后读取到最前端。

    当第二个参数小于第一个参数的时候,返回的是空数组。

    ③splice(参数1,参数2,参数3,……)       这个方法是数组中最强大的方法,但是主要用来向数组中间添加元素;

      参数1,是数组要替换元素的下标;参数2,是要替换的个数;以后的参数是要插入进去的元素;

      《1》删除   

        将“参数1”设置为要删除元素的下表,“参数2”设置为要删除的个数,插入元素不写,就实现了删除指定位置的元素;arr.splice(2,2);        

        var t = [0,1,2,3,4,5,6,7,8,9];
        var d = t.splice(2,2);
        document.write(t.toString()+"<br/>");//0,1,4,5,6,7,8,9
        document.write(d.toString());//2,3

       《2》插入

        这个主要是将“参数2”设置为0,arr.splice(2,0,11,22);     

        var t = [0,1,2,3,4,5,6,7,8,9];
        var d = t.splice(2,0,11,22);
        document.write(t.toString()+"<br/>");//0,1,11,22,2,3,4,5,6,7,8,9
        document.write(d.toString());//空数组

       《3》替换

        这个是所有的参数写的最完整的了。

        splice(2,1,22,33,44);替换的数量跟删除的数量可以不相等;

    这个方法返回的是删除元素组成的数组,没有删除元素时候,返回一个空数组;

  7. 位置方法

    ① arr.indexOf("element",start_index);element是要查找的项,start_index是开始的下标;包含start_index下标所在的元素。只找到第一个对应的下标,没有返      回-1;

    ② arr.lastIndexOf(“element”,start_index);同上,但是是从后往前数;也是只读取到第一个对应的下标;

  8. 迭代方法

    数组中有各种各样的迭代方法,太好了…… 

    所有的迭代方法都包含两个参数,第一个是每一个元素要执行的函数,第二个是作用域对象(可以省略)

    函数的格式为:

    function(item,index,array);item:数组项,数组项下标,数组对象本身;

    every(),每一个元素都在执行函数后返回true,则该函数返回true;

         some(),任意一项返回true,则返回true;

         filter(),对每一个元素都运行函数后,返回true项组成的数组;

       map(),每一个元素都运行函数,将每个元素返回的结果组成一个新的数组;        

     forEach(),没有返回值。类似于for循环  

  9. 归并方法

   下边的两个方法都包含两个参数,第一个是数组每一项都调用的函数,第二个是作为归并基础的初始值。然后返回一个最终值。

   执行的函数格式为:

    function(pre,cur,index,array){

      //每一项执行的操作;

    }

    var t = [0,1,2,3,4,5,6,7,8,9];
    alert(t.reduce(function(pre,cur,index,array){
      return pre+cur;
    }));//45

  每一项执行完以后返回的值,作为后一项的pre;

 

 

 

 

       

       

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。