复习一下JS中数组的运用。

截取数组:slice(startIndex,endIndex):

返回数组中指定开始位置倒结束位置的数组。不改变原数组内容。


另外还有一个重要的方法,插入、删除或替换数组元素方法:

splice(startIndex,howmany,element1~elementX):会修改原数组内容。参数含义分别为:“指定开始位置”,“删除多少个元素个数(可以为0)”,“添加到数组中的新元素(从startIndex下标开始)”。


 

相关运用

//题目一:"A[B]C[D]E[F]G"将其分为两个数组,分别是 ACEG 和 [B][D][F].

  




java 截取数组的后部分 截取数组js_javascript

java 截取数组的后部分 截取数组js_数组_02

题目一


function      QuestionFn1() {
         var 
     str  
    = 
      
    " 
    A[B]C[D]E[F]G 
    " 
    ;

         var 
     oGetTwoArray  
    = 
      
    new 
     GetTwoArray();
         // 
    取左右括号中的值 
    
         oGetTwoArray.GetLeftAndRightValue(str);
    oGetTwoArray.GetNoLeftAndRightValue(str);

         var 
     array1  
    = 
     oGetTwoArray.arrBetweenLeftRight;
         var 
     array2  
    = 
     oGetTwoArray.arrNoLeftRight;

    alert(array1.join(     "" 
    ));
    alert(array2.join(     "" 
    ));


}

     // 
    找到左右括号的index 
    
     function 
     GetTwoArray() {
         this 
    .indexLeft  
    = 
      
    0 
    ;              
    // 
    左括号索引 
    
          
    this 
    .indexRight  
    = 
      
    0 
    ;             
    // 
    右括号索引 
    
          
    this 
    .arrBetweenLeftRight  
    = 
     [];   
    // 
    数组:存放左右括号中的字母 
    
          
    this 
    .arrNoLeftRight  
    = 
     [];        
    // 
    数组:存放没有括号包围的字母 
    
          
    // 
    取左右括号中的值 
    
          
    this 
    .GetLeftAndRightValue  
    = 
      
    function 
    (str) {
             // 
    找到字符串中左括号的index 
    
              
    this 
    .indexLeft  
    = 
     str.indexOf( 
    ' 
    [ 
    ' 
    );
             this 
    .indexRight  
    = 
     str.indexOf( 
    ' 
    ] 
    ' 
    );

             // 
    取括号中的值(包含括号) 
    
              
    var 
     value  
    = 
     str.substring( 
    this 
    .indexLeft,  
    this 
    .indexRight  
    + 
      
    1 
    );

             // 
    存放到数组中 
    
              
    this 
    .arrBetweenLeftRight.push(value);

             // 
    剩下的str 
    
              
    var 
     restStr  
    = 
     str.substr( 
    this 
    .indexRight  
    + 
      
    1 
    );

             // 
    如果还有左右括号则继续找 
    
              
    if 
     (restStr.indexOf( 
    ' 
    [ 
    ' 
    )  
    != 
      
    - 
    1 
      
    && 
     restStr.indexOf( 
    ' 
    ] 
    ' 
    )  
    != 
      
    - 
    1 
    ) {
                 this 
    .GetLeftAndRightValue(restStr);
        }
    }
         // 
    取没有左右括号包围的值 
    
          
    this 
    .GetNoLeftAndRightValue  
    = 
      
    function 
    (str) {
             // 
    找到字符串中左括号的index 
    
              
    this 
    .indexLeft  
    = 
     str.indexOf( 
    ' 
    [ 
    ' 
    );
             this 
    .indexRight  
    = 
     str.indexOf( 
    ' 
    ] 
    ' 
    );

             // 
    取没有左右括号包围的值(跟着右括号的第一个) 
    
              
    var 
     value  
    = 
     str.substring( 
    0 
    ,  
    1 
    );
             if 
     (value  
    != 
      
    ' 
    [ 
    ' 
    ) {   
    // 
    因为第一个就有可能就是左括号 
    
                  
    // 
    存放到数组中 
    
                  
    this 
    .arrNoLeftRight.push(value);
        }
             // 
    剩下的str 
    
              
    var 
     restStr  
    = 
     str.substr( 
    this 
    .indexRight  
    + 
      
    1 
    );

             // 
    如果还有左右括号则继续找 
    
              
    if 
     (restStr.indexOf( 
    ' 
    [ 
    ' 
    )  
    != 
      
    - 
    1 
      
    && 
     restStr.indexOf( 
    ' 
    ] 
    ' 
    )  
    != 
      
    - 
    1 
    ) {
                 this 
    .GetNoLeftAndRightValue(restStr);
        }
             // 
    剩下的没有左右括号了,就全部添数组里去 
    
              
    else 
      
    if 
     (restStr.indexOf( 
    ' 
    [ 
    ' 
    )  
    == 
      
    - 
    1 
      
    && 
     restStr.indexOf( 
    ' 
    ] 
    ' 
    )  
    == 
      
    - 
    1 
    ) {
                 this 
    .arrNoLeftRight.push(restStr);
        }
    }
}


 

 

 //题目二:有两个有序整数数组,例如【1, 3, 5, 7, 9】和【2, 4, 6, 7, 8, 10, 13】,设计一个函数使两个数组合并,并且剔除掉两个数组里重复的元素.


 



java 截取数组的后部分 截取数组js_javascript

java 截取数组的后部分 截取数组js_数组_02

题目二

function      QuestionFn2() {
         var      arr1  
    = 
     [ 
    1 
    ,  
    3 
    ,  
    5 
    ,  
    7 
    ,  
    9 
    ];
         var      arr2  
    = 
     [ 
    2 
    ,  
    4 
    ,  
    6 
    ,  
    7 
    ,  
    8 
    ,  
    10 
    ,  
    13 
    ];
         //     循环arr2中的每一个元素 去跟 arr1中的每一个元素 比较 
    
              for 
     ( 
    var 
     j  
    = 
      
    0 
    ; j  
    < 
     arr2.length; j 
    ++ 
    ) {
             for      ( 
    var 
     i  
    = 
      
    0 
    ; i  
    < 
     arr1.length; i 
    ++ 
    ) {

                 //     如果第二个数组中的数 小于数组一中的 某个数 则插到他前面 
    
                      if 
     (arr2[j]  
    < 
     arr1[i]) {
                arr1.splice(i,      0     , arr2[j]);
                     break     ;
            }
                 //     相等则剔除 
    
                      else 
      
    if 
     (arr2[j]  
    == 
     arr1[i]) {
                arr1.splice(i,      1     , arr2[j]);
                     break     ;
            }
                 //     如果 arr2[j] 比 数组1中的 最后一个数还大 则插到最后面去 
    
                      else 
      
    if 
     (arr2[j]  
    > 
     arr1[arr1.length  
    - 
      
    1 
    ]) {
                arr1.push(arr2[j]);
            }
        }
    }
    alert(arr1.toString());
}

//题目三:给定一个整数数组,例如【2, 4, 5, 6, 7, 8】和一个数字,例如10,请设计一个函数找出两个元素,并且使这两个数的和为给定数字,并打印出来.

 



 

 


java 截取数组的后部分 截取数组js_javascript

java 截取数组的后部分 截取数组js_数组_02

题目三

function      QuestionFn3() {

         var      sum      = 
     window.prompt( 
    " 
    请输入数组中两数相加的和 
    " 
    ,  
    10 
    );

         var      arr      = 
     [ 
    2 
    ,  
    4 
    ,  
    5 
    ,  
    6 
    ,  
    7 
    ,  
    8 
    ];

         var      isFind      = 
      
    false 
    ;  
    // 
    记录是否存在 
    
     
         for      (     var 
     i  
    = 
      
    0 
    ; i  
    < 
     arr.length; i 
    ++ 
    ) {
             for      (     var 
     j  
    = 
     i  
    + 
      
    1 
    ; j  
    < 
     arr.length; j 
    ++ 
    ) {
                 if      (arr[j]      + 
     arr[i]  
    == 
     sum) {
                alert(arr[i]      +           " 
    + 
    " 
      
    + 
     arr[j]  
    + 
      
    " 
    = 
    " 
      
    + 
     sum);
                isFind      =           true 
    ;
            }
        }
    }
         //     如果没有找到     
              if      ( 
    ! 
    isFind) {
        alert(     "     数组中没有两数相加等于     " 
      
    + 
     sum);
    }
}