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是基于对象的语言。



目录
相关文章
|
3月前
|
前端开发 JavaScript 开发者
JavaScript:构建动态网络的引擎
JavaScript:构建动态网络的引擎
|
6月前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
284 19
|
7月前
|
监控 算法 JavaScript
基于 JavaScript 图算法的局域网网络访问控制模型构建及局域网禁止上网软件的技术实现路径研究
本文探讨局域网网络访问控制软件的技术框架,将其核心功能映射为图论模型,通过节点与边表示终端设备及访问关系。以JavaScript实现DFS算法,模拟访问权限判断,优化动态策略更新与多层级访问控制。结合流量监控数据,提升网络安全响应能力,为企业自主研发提供理论支持,推动智能化演进,助力数字化管理。
203 4
|
8月前
|
JavaScript
JS实现多条件搜索函数
JS封装的多条件搜索
|
9月前
|
监控 算法 JavaScript
企业用网络监控软件中的 Node.js 深度优先搜索算法剖析
在数字化办公盛行的当下,企业对网络监控的需求呈显著增长态势。企业级网络监控软件作为维护网络安全、提高办公效率的关键工具,其重要性不言而喻。此类软件需要高效处理复杂的网络拓扑结构与海量网络数据,而算法与数据结构则构成了其核心支撑。本文将深入剖析深度优先搜索(DFS)算法在企业级网络监控软件中的应用,并通过 Node.js 代码示例进行详细阐释。
190 2
|
10月前
|
JavaScript 前端开发
JavaWeb JavaScript ③ JS的流程控制和函数
通过本文的详细介绍,您可以深入理解JavaScript的流程控制和函数的使用,进而编写出高效、可维护的代码。
236 32
|
9月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
9月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
9月前
|
JavaScript 前端开发 Java
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
柯里化是一种强大的函数式编程技术,它通过将函数分解为单参数形式,实现了灵活性与可复用性的统一。无论是参数复用、延迟执行,还是函数组合,柯里化都为现代编程提供了极大的便利。 从 Redux 的选择器优化到复杂的数据流处理,再到深度嵌套的函数优化,柯里化在实际开发中展现出了非凡的价值。如果你希望编写更简洁、更优雅的代码,柯里化无疑是一个值得深入学习和实践的工具。从简单的实现到复杂的应用,希望这篇博客能为你揭开柯里化的奥秘,助力你的开发之旅! 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
9月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章