美文网首页从零开始学前端
JS内置对象:数组(二)

JS内置对象:数组(二)

作者: 越IT | 来源:发表于2017-01-29 22:50 被阅读14次

    一、数组的操作方法

    【知识点】

    concat()
    slice()

    1.concat()

    【语法】:

    arrayObject.concat(arrayX,arrayX,......,arrayX)
    

    【功能】:
    用于连接两个或多个数组。

    【返回值】:
    数组。

    【案例】:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
              var arr1=["a","b","c"],
              arr2=["d","e",1,3],
              arr3;
          // concat
              arr3=arr1.concat(arr2,["m",99,8]);
              console.log(arr3);
    </script>
    </body>
    
    </html>
    

    【结果】:


    2.slice()

    【语法】:

    arrayObject.slice(start,end)
    

    【功能】:
    从已有的数组中返回选定的元素。

    【参数】:
    start (必需)规定从何处开始选取,如果是负数,那么它规定从数组尾部开始算起的位置。
    end(可选)规定从何处结束选取,该参数是数组片断结束处的数组下标。

    【返回值】:数组

    说明:
    1.Start和end指的是数组中索引值
    2.截取从Start和end(不包含该元素)的元素,即从start和end-1的元素

    【案例】

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
            //slice(start,end)
              var colors=["red","green","blue","yellow","orange"];
              var newColors=colors.slice(1,2);
              console.log(newColors);
    </script>
    </body>
    </html>
    

    【结果】


    说明:
    1.如果没有指定end,那么切分的数组包含从start 到数组结束的所有元素。
    2.如果slice()方法的参数中有一个负数,则用数组长度加上该数来确定相应的位置。

    【案例】:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
            //slice(start,end)
              var colors=["red","green","blue","yellow","orange"];
              var newColors=colors.slice(-2,4);//5-2=3即3,3截取
              console.log(newColors);
    </script>
    </body>
    
    </html>
    

    【结果】:

    ★【面试题】完成以下代码段,实现b数组对a数组的拷贝,方法越多越好var a=[1,"yes",3], b;

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
            //完成以下代码段,实现b数组对a数组的拷贝,方法越多越好
            var a=[1,"yes",3],
            b;
    
            //1.数组遍历,push
            b=new Array();
            for (var i = 0; i < a.length; i++) {
            b.push(a[i]);  
            }
            console.log(b);  
    
            //2.concat()
            b=[].concat(a);
            console.log(b);
    
            //3.slice();
            b=a.slice(0);
            console.log(b);     
    </script>
    </body>
    
    </html>
    

    二 、splice()方法

    1、掌握使用splice()方法删除数组项
    2、掌握使用splice()方法插入数组项
    3、掌握使用splice()方法替换数组项

    1.删除

    【语法】:

    arrayObject.splice(index,count)
    

    【功能】:
    删除从index处开始的零个或多个元素。

    【返回值】:
    含有被删除的元素的数组。

    说明:
    count是要删除的项目数量,如果设置为0,则不会删除项目。如果不设置,则删除从index开始的所有值。

    【案例】:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
          var arr=["a","b","c","d","e","f"];
          //删除
          var delArr=arr.splice(2,2);
          console.log(arr);
          console.log(delArr);
    </script>
    </body>
    </html>
    

    【结果】:


    2.插入

    【语法】:

    arrayObject.splice(index,0,item1,……,itemX)
    

    【功能】:
    在指定位置插入值

    【参数】:
    index:起始位置
    0:要删除的项数
    item1…itemX:要插入的项

    【返回值】:数组

    【案例】:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
          var arr=["a","b","c","d","e","f"];
          //插入
          var insertArr=arr.splice(3,0,"m","n");
          console.log(arr);
          console.log(insertArr);
    </script>
    </body>
    </html>
    

    【结果】:


    3.替换

    【语法】:

    arrayObject.splice(index,count,item1,……,itemX)
    

    【功能】:
    在指定位置插入值,且同时删除任意数量的项

    【参数】:
    index:起始位置
    count:要删除的项数
    item1…itemX:要插入的项目

    【返回值】:从原始数组中删除的项(如果没有删除任何项,则返回空数组)

    【案例】:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
          var arr=["a","b","c","d","e","f"];
          //替换
          var replaceArr=arr.splice(1,2,"x","y","z");
          console.log(arr);
          console.log(replaceArr);
    </script>
    </body>
    </html>
    

    【结果】:


    三、ECMAScript为数组实例添加的两个位置方法:

    indexOf()
    lastIndexOf()

    1.indexOf()

    【语法】:

    arrayObject.indexOf(searchvalue,startIndex)
    

    【功能】:
    从数组的开头(位置0)开始向后查找。

    【参数】:
    searchvalue:必需,要查找的项;
    startIndex:可选,起始位置的索引。

    【返回值】:
    number,查找的项在数组中的位置,没有找到的情况下返回-1。

    【案例】:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
          var nums=[1,7,5,7,8,1,6,9];
          var pos=nums.indexOf(7,2);
          console.log(pos);
    </script>
    </body>
    </html>
    

    【结果】:


    2.lastIndexOf()

    【语法】:

    arrayObject.lastIndexOf(searchvalue,startIndex)
    

    【功能】:
    从数组的末尾开始向前查找。

    【参数】:
    searchvalue:必需,要查找的项;
    startIndex:可选,起点位置的索引。

    【返回值】:
    number,查找的项在数组中的位置,没有找到的情况下返回-1.

    【案例】:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
          var nums=[1,7,5,7,8,1,6,9];
          var pos=nums.lastIndexOf(1);
          console.log(pos);
    </script>
    </body>
    </html>
    

    【结果】:


    说明:
    1.在比较第一个参数与数组中的每一项时,会使用全等操作符,即要求查找的项必须严格相等。
    2.数组的位置方法是ECMAScript5为数组实例新增的,所以支持的浏览器只有:
    IE9+、Firefox2+、Safari3+、Opera9.5和Chrome。

    ★如果考虑低版本浏览器,则封装一个方法实现indexOf的功能:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
    <script>
          var nums=[1,7,5,7,8,1,6,9];
          //封装一个方法实现indexOf的功能
          function ArrayIndexOf(arr,value){
            //检测value在arr中出现的位置
            for(var i=0;i<arr.length;i++){
              if(arr[i]===value){
                  return i;
              }
            }
            return -1;
          }
          var pos2=ArrayIndexOf(nums,8);
          console.log(pos2);
    </script>
    </body>
    </html>
    

    相关文章

      网友评论

        本文标题:JS内置对象:数组(二)

        本文链接:https://www.haomeiwen.com/subject/dubcittx.html