JavaScript---网络编程(2)-函数与数组-2

简介: JavaScript---网络编程(2)-函数与数组

5.数组

方便操作多元素的容器,可以对其中的元素进行编号。

特点:可以存任意元素,长度是可变的。

格式:


var arr = new Array();
    arr[0] = “hello”;
    arr[1] = 123;
    var arr = [‘hello’,123,true,”abc”];


通过遍历即可对数组进行基本操作。


for(var x=0; x<arr.length; x++)
    {
        alert(arr[x]);
    }


代码演示:

<html>
  <head>
    <title>javascript数组用法演示</title>
  </head>
  <body>
     <script type="text/javascript">
        //数组定义的方式1: 定义时直接赋初值
        var arr =[12,34,2,-3,90,12];
        document.write( typeof(arr) );
        //object
        document.write("<br/>");
        document.write("len:" + arr.length);
        document.write("<br/>");
        //遍历数组
        for(var x=0;x<arr.length;x++){
            document.write("arr["+x+"]="+ arr[x]+"&nbsp;");
        }
        document.write("<br/>");
        arr[0]=-10;
        arr[7]=66;//数组可以自动增长,且arr[6]没有赋值则是undefined
        document.write("len:"+arr.length+" 数组长度自动加长");
        document.write("<br/>");
        for(var x=0;x<arr.length;x++){
            document.write("arr["+x+"]="+ arr[x]+"&nbsp;");
        }
        document.write("<br/>");
        document.write("<hr/>");
        var arr2=[];
        document.write("arr2.length="+arr2.length);//0
        document.write("<br/>");
        arr2[1]=10;
        for(var x=0;x<arr2.length;x++){
            document.write("arr2["+x+"]="+ arr2[x]+"&nbsp;");
        }
        document.write("<br/>");
        //※※错误的声明方式--数组
        //int[] arr3 ={1,2,3};
        //var[] arr3 = [1,2,3];//错的,[]代表的是数组类型,而js中,所有数据类型只有一个var声明,不存在“var[]”这种类型
        document.write("同一个数组的元素可以是不同类型!!!<br/>");
        var arr4=[1,2,3,100];
        arr4[0]="abc";
        arr4[1]=true;
        for(var x=0;x<arr4.length;x++){
            document.write("arr4["+x+"]="+ arr4[x]+"&nbsp;");
        }
        document.write("<br/>");
        //※※综上,js数组的两个特点:
        //1,长度是可变的
        //2,元素的类型是任意的
     </script>
     <hr/>
    <script type="text/javascript">
       //数组定义的方式2: 使用js中的Array对象来定义
       var arr10 = new Array(); //※ 空参
       for(var x=0;x<arr10.length;x++){
        document.write("arr10["+x+"]="+ arr10[x]+"&nbsp;");
       }//什么都没有,因为长度是0
       document.write("arr10.length="+arr10.length);//0
       document.write("<br/>");
       var arr11 = new Array(8); //※ 一个参数,代表的是数组的长度
       arr11[2]=12;
       arr11[3]="abc";
       for(var x=0;x<arr11.length;x++){
           if(x==2||x==3){
                document.write("<font color=red >arr11["+x+"]="+ arr11[x]+"&nbsp;</font>");
           }else{
                document.write("arr11["+x+"]="+ arr11[x]+"&nbsp;");
           }
       }
       document.write("<br/>");
       var arr12 = new Array(10,11,12); //※ 多个参数,代表的是数组元素值
       arr12[5]="aaa";
       for(var x=0;x<arr12.length;x++){
        document.write("arr12["+x+"]="+ arr12[x]+"&nbsp;");
       }
       document.write("<br/>");
    </script>
  </body>
</html>

360浏览器8.1 演示结果:

image.png

接下来将函数和数组结合起来用用,写个排序和二分查找。

<html>
  <head>
    <title>javascript数组与函数练习</title>
  </head>
  <body>
  <script type="text/javascript">
    //写一个获取数组中元素最大值的函数
    //若有多个,返回第一个
    function getMax(arr){
        var max=0;//最大值的下标
        for(var x=1;x<arr.length;x++){
            if(arr[x]>arr[max]){
                max = x;
            }
        }
        return arr[max];
    }
    //调用
    var arr=[23,-3,45,0,-100,47,22];
    var v = getMax(arr);
    document.write("数组最大值的下标:"+v);
    document.write("<br/>");
    document.write("数组最大值:"+v);
    document.write("<br/>");
    //数组选择排序
    function sortArray(arr){
        for(var x=0;x<arr.length-1;x++){
            var min=x;
            for( var y=x+1;y<arr.length;y++){
                if(arr[min]>arr[y]){
                    min=y;
                }
            }
            if(min!=x){
                swap(arr,x,min);
            }
        }
    }
    function swap(arr,x,y){
        var temp = arr[x];
        arr[x] = arr[y];
        arr[y] = temp;
    }
    document.write("<hr/>");
    document.write("排序前:"+arr+"<br/>");
    sortArray(arr);
    document.write("排序后:"+arr+"<br/>");
    //我们的输出函数---把内容输出到页面且换行
    function println(str){
         document.write(str+"<br/>");
    }
    println(arr);
    sortArray(arr);
    println(arr);
    //到数组当中查找元素
    function searchElement(arr,key){
        for(var x=0;x<arr.length;x++){
            if(arr[x]==key){
                return x;
            }
        }
        return -1;
    }
    println( searchElement(arr,0) );
    println( searchElement(arr,123) );
  </script>
  <script type="text/javascript">
    //二分查找
    function binarySearch(arr,key){
        var max,min,mid;
        min=0;
        max=arr.length-1;
        while(min<=max){
            mid = (max+min)>>1;
            if(key>arr[mid]){//落在右边
                min = mid+1;                
            }else if(key<arr[mid]){//落在左边
                max = mid-1;
            }else{
                return mid;
            }
        }
        return -1;
    }
    println("二分查找结果:");
    println( binarySearch(arr,0) );
    println( binarySearch(arr,123) );
    //数组反转
    function reverseArray(arr){
        for(var start=0,end=arr.length-1; start<end; start++,end--){
            swap(arr,start,end);
        }
    }
    reverseArray(arr);
    println("反转之后:"+arr);
  </script>
  </body>
</html>


360浏览器8.1 演示结果:

image.png

JS中的全局变量和局部变量解答:

代码演示:

<html>
  <head>
    <title>javascript中的全局变量与局部变量</title>
  </head>
  <body>
    <!-- 
            全局变量: js中,直接在脚本当中定义的变量全都是全局变量。
            局部变量: 在函数中定义的变量是局部的。
     -->
      <script type="text/javascript">
         function println(str){
             document.write(str+"<br/>");
         }
         var a=100;
         println("遍历输出0-9:");
         for(var x=0;x<10;x++){
             println("x="+x);
         }
      </script> 
      <script type="text/javascript">
         println("aaaa="+a);
         println("xxxx="+x);
         function aa(){
             var y=123;
             document.write("y="+y);
             return;
         }
         aa();
         document.write("<br/>");
         println("yyyy="+y);//不能访问函数内部定义的变量,因为它是局部的
      </script> 
      <!-- 一点小细节 -->
      <script type="text/javascript">
         var n=3;//全局变量n
         function abc(n){//局部变量n---形参是方法内部声明的局部变量,值由arguments[0]在使用n时临时赋给它的
             n=6;
         }
         abc(n);//把x传给方法abc,并在其中试图对该值进行更改--未遂!----本质上实参n是把值传给了函数中的arguments数组了
         println("n="+n);
      </script>
  </body>
</html>


360浏览器8.1 演示结果:

image.png

下一次就学习JS的对象了。毕竟JS是基于对象的语言。



目录
相关文章
|
12天前
|
存储 JavaScript 索引
JS中数组的相关方法介绍
JS中数组的相关方法介绍
|
12天前
|
JavaScript Java
JS有趣的灵魂 清空数组
JS有趣的灵魂 清空数组
|
20天前
|
JavaScript
变量和函数提升(js的问题)
变量和函数提升(js的问题)
|
20天前
|
JavaScript
常见函数的4种类型(js的问题)
常见函数的4种类型(js的问题)
11 0
|
20天前
|
JavaScript
写一个函数将N组<>(包含开始和结束),进行组合,并输出组合结果 (js)
写一个函数将N组<>(包含开始和结束),进行组合,并输出组合结果 (js)
9 0
|
1月前
|
自然语言处理 JavaScript 网络架构
js开发:请解释什么是ES6的箭头函数,以及它与传统函数的区别。
ES6的箭头函数以`=&gt;`定义,简化了函数写法,具有简洁语法和词法作用域的`this`。它无`arguments`对象,不能用作构造函数,不支持`Generator`,且不改变`this`、`super`、`new.target`绑定。适用于简短表达式,常用于异步编程和高阶函数。
17 5
|
1月前
|
JavaScript 前端开发 API
常用JavaScript 数组 API大全
常用JavaScript 数组 API大全
32 0
|
1月前
|
网络协议 Linux API
Linux网络编程:shutdown() 与 close() 函数详解:剖析 shutdown()、close() 函数的实现原理、参数说明和使用技巧
Linux网络编程:shutdown() 与 close() 函数详解:剖析 shutdown()、close() 函数的实现原理、参数说明和使用技巧
74 0
|
5天前
|
JavaScript 前端开发 索引
JavaScript 数组中的增、删、改、查
JavaScript 数组中的增、删、改、查
|
6天前
|
缓存 JavaScript 前端开发
js的入口函数,入口函数的作用
js的入口函数,入口函数的作用
12 4