数组中常用的方法

    push( )

      - 该方法可以向数组的末尾添加一个或多个元素,并返回数组的新的长度

      - 可以将要添加的元素作为方法的参数传递,这样这些元素将会自动添加到数组的末尾

      - 方法会将数组新的长度作为返回值返回

        var  arr = [ '悟空','八戒','沙僧','唐僧','奔波霸儿' ];

        var  result = arr . push( '霸波奔儿' );   // 6

        console . log( arr );   //   悟空,八戒,沙僧,唐僧,奔波霸儿,霸波奔儿 

    pop( )

      - 该方法可以删除数组的最后一个元素,并将被删除的元素作为返回值返回

        result  =  arr . pop( );   //  5

        console . log( arr );  //  悟空,八戒,沙僧,唐僧,奔波霸儿

 

    unshift( )

      - 该方法可以向数组的开头添加一个或多个元素,并返回数组的新的长度

      - 向前边插入元素以后,其他的元素索引会依次调整

        arr . unshift = [ '红孩儿'];//  6

        console . log( arr );   //   红孩儿,悟空,八戒,沙僧,唐僧,奔波霸儿,霸波奔儿 

    shift( )

      - 该方法可以删除数组的第一个元素,并将被删除的元素作为返回值返回

        result  =  arr . shift( );   //   5

        console . log( arr );  //   八戒,沙僧,唐僧,奔波霸儿,霸波奔儿 

 

    slice( ):不会对原数组产生影响

      - 可以用来从数组提取指定元素,该方法不会改变元素数组,而是将截取到的元素封装到一个新的数组中返回

      - 参数:

         1. 开始的位置索引,包含开始索引

         2. 结束的位置索引,不包含结束索引

            第二个参数可以省略不写,此时会截取从开始索引往后的所有元素

       - 索引可以传递一个负值,如果传递一个负值,则从后往前计算

          -1:表示倒数第一个,-2:表示倒数第二个 

          result  =  slice(1,3)  //    悟空,八戒

    splice( )

      - 可以用于删除数组中的指定元素

      - 使用splice( ) 会影响到原数组,会将指定元素从原数组中删除,并将被删除的元素作为返回值返回

      - 参数:

        第一个参数,表示开始位置的索引

        第二个参数,表示删除的数量

        第三个及后面的参数,替换删除位置的新参数

        var  arr = [ '悟空','八戒','沙僧','唐僧','奔波霸儿' ];

        result  = arr . splice( 1, 2 , ' 牛魔王 ') ;  //  悟空,牛魔王,沙僧,唐僧,奔波霸儿

    concat( ):不会对原数组产生影响

      - 连接两个或更多个数组,并将新的数组返回

      - 除了可以传数组,也可以传元素

        var  arr = [ '悟空','八戒','沙僧' ];

        var  arr2 = [ '牛魔王','红孩儿','铁扇公主' ];

        var  result  =  arr . concat( arr2,' 白骨精 ',' 蜘蛛精 ' );

        console . log( result );

     join( ):不会对原数组产生影响

       - 该方法可以将数组转换为一个字符串

       - 该方法不会对原数组产生影响,而是将转换后的字符串作为结果返回

       - 在 join( )中可以指定一个字符串作为参数,这个字符串将会成为数组中元素的连接符

        如果不指定连接符,则默认使用逗号(,)作为连接符

         arr = [ '八戒','悟空','沙僧' ];

         result = arr . join( ' - ' );

         console . log( result );  //  八戒 - 悟空 - 沙僧

     reverse( )

       -  该方法用来反转数组(前边的去后面,后边的去前面)

       - 该方法会直接修改原数组

          arr . reverse( );

          console . log( arr );   //  沙僧,八戒,悟空

     sort()

       - 可以用来对数组中的元素进行排序

       - 也会影响原数组,默认会按照Unicode编码进行排序

       - 即使对于纯数字的数组,使用sort( )排序时,也会按照Unicode编码来排序,所以对数字进行排序时,可能会得到错误的结果。

       - 我们也可以自己来指定排序规则

        在sort( )添加一个回调函数,来指定排序规则

        回调函数中需要定义两个形参,浏览器将会分别使用数组中的元素作为实参去调用回调函数

        使用哪个元素调用不确定,但是肯定的是在数组中 a 一定在 b 前边

       - 浏览器会根据回调函数的返回值来决定元素的顺序

          如果返回一个大于0的值,则元素会交换位置

          如果返回一个小于0的值,则元素位置不变

          如果返回一个0,则认为两个元素相等,也不交换位置

          arr  = [ 5,4,3];

          arr . sort( function(a,b){

            /*

            if( a > b ){   // 前面的大  倒序排序

              return 1;   //  return -1;表示升序排序

            }else if( a < b ){

              return -1;

            }else{

              return 0;

            }  */

            //  可以优化上面的做法

            return  a - b ;   //  升序排序

            return  b - a ;   //  降序排序  

          });

          console . log( arr ) ;  //  a =5  b = 4  , a = 4  b = 3

 

 

 

 

     push( )案例:   

        function Person( name , age ){
          this.name = name;
          this.age = age;
        }
        Person.prototype.toString = function(){
          return this.name + ',' + this.age + '岁。' ;
        };
 
        //  创建一个 Person 对象
        var per = new Person('孙悟空',18);
        var per2 = new Person('猪八戒',20);
        var per3 = new Person('红孩儿',8);
        var per4 = new Person('沙和尚',16);
        var per5 = new Person('唐僧',21);
 
         //  将这些 person 对象放置在一个数组中
        var perArr = [ per,per2,per3,per4,per5 ];
 
         //   创建一个函数,可以将Person中的满18岁的Person提取出来,封装到一个新的数组中并返回
        //   arr  形参,要提取信息的数组
        function getAdult( arr ){
 
          var newArr = [ ] ;  //  创建一个新的数组
          //  遍历arr,获取 arr 中 Person 对象
          for(var i = 0 ; i < arr.length ; i++){
            if(arr [ i ].age >= 18){    //  判断 Person 对象的 age 是否大于等于18
              newArr.push( arr[ i ] );    //  如果大于等于18,则将这个对象添加到newArr数组中
            }
          }
            return newArr;   //   将新的数组返回
        }
        var result = getAdult( perArr );
        console.log( result );
 
 
     splice( )案例:  
        //   删除数组中重复的元素 
    
        var arr = [1,2,3,3,2,1,3,4,5,2];    //  创建一个数组 
 
        for(var i = 0; i < arr.length ; i++){    //  获取数组中的每一个元素
          //  console . log( arr[ i ] ) ;   获取当前元素后的所有元素
          for(var j = i + 1 ;j < arr.length ; j++){
 
            if( arr[ i ] == arr[ j ] ){   //   判断两个元素的值是否相等
              //   如果相等则证明出现了重复的元素,则删除 j 对应的元素
              arr.splice( j , 1 ) ;  
              //  当删除了当前 j 所在的元素以后,后边的元素会自动补位
              //   此时将不会在比较这个元素,需要再比较一次 j 所在位置的元素
              //    使 j 自减
            }
             j -- ;
          }
          document.write( arr[ i ] ) ;
        }
posted @ 2019-07-30 10:24  晴天宝宝i  阅读(417)  评论(0编辑  收藏  举报