• 数组中常用的方法


        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 ] ) ;
            }
  • 相关阅读:
    HDU 1075 What Are You Talking About(字典树)
    HDU 1075 What Are You Talking About (stl之map映射)
    HDU 1247 Hat’s Words(字典树活用)
    字典树HihoCoder
    HDU 1277全文检索(字典树)
    HDU 3294 Girls' research(manachar模板题)
    HDU 3294 Girls' research(manachar模板题)
    HDU 4763 Theme Section(KMP灵活应用)
    Ordering Tasks UVA
    Abbott's Revenge UVA
  • 原文地址:https://www.cnblogs.com/qtbb/p/11268386.html
Copyright © 2020-2023  润新知