JS 学习 数组

来源:互联网 发布:淘宝怎么申请企业店铺 编辑:程序博客网 时间:2024/05/21 08:42

①    如何创建数组

 

方法1 

var arr=[元素1,元素2......]    其实也可以这样创建空数组 var arr=[];

 

元素的个数可以任意,元素的类型可以任意

 

方法2.

 

var arr=new Array();


☞ 如果下标越界会怎样?

 

报 undefine

 

☞ js的数组是否能够动态的增长

 

                                   vara=[2,3];

                                   a[2]=56;

                                   alert(a[2]);

 

说明js的数组可以动态增长.

 

 

①    数组在内存中怎样存在..

 

php程序中,通过一个函数传递数组,是值传递,还是引用传递?

 

结论是默认是值传递(拷贝.)

 

 

 

js代码中,通过一个函数传递数组,是引用传递

 

functiontest2(val){

              //val[0] 访问第一个元素.

              val[0]=900;

       }

 

       arr=[1,2,3];

 

       //调用函数

       test2(arr);

      

       for(var i=0;i<arr.length;i++){

              document.write("*****"+arr[i]);

       }

输出是 900*****2****3


但是如果函数是

functiontest2(val){

              //val[0] 访问第一个元素.

            val=null;

       }


那会返回1 2 3

原因:val不在指向arr的地址了 而是执行null



u     数组的常用的属性和函数

 

①    length 属性可以返回该数组的大小(遍历)

②    split 函数,可以拆分字符串.

var str="abchello boy";

              var arr=str.split(" ");

 

              document.write(arr+ arr.length);

 

 

u     数组小结:

 ①数组可存放任意类型的数据

 ②数组大小不必事先指定,可以动态增长

 ③数组名可以理解为指向数组首地址的引用.

 ④数组元素默认从0开始编号的.

 

 二维数组 

var arr1=[元素1,元素2..]


如果我们的元素又是一个数组,则这个一维数组就成了二维数组.


测试题:

 

/*

       0 0 0 0 0 0

       00 1 0 0 0     

       02 0 3 0 0

       00 0 0 0 0

 

*/

 

//定义二维数组

       vararr2=[[0,0,0,0,0,0],[0,0,1,0,0,0],[0,2,0,3,0,0],[0,0,0,0,0,0]];

 

 

       for(vari=0;i<arr2.length;i++){

             

              var size=arr2[i].length;

              for(varj=0;j<size;j++){

                    

                     document.write(arr2[i][j]+"&nbsp;");

 

              }

 

              document.write("<br/>");

       }

冒泡排序


二分查找:

1.     二分查找

 

面试题: 一定掌握!

 

//二分查找[递归]

 

       //二分查找要保证我们的数组是一个有序的.

       //思想是

       //首先把数组的中间这个数找出,然后和你要查询的数比较

       //① 你要查询的数比中间的数大. 则说明我们应当该数组的右边[后边]查询

       //② 你要查询的数比中间的数小 .则说明我们应当该数组的左边[前边]查询

       //③ 你要查询的数等于中间的数, 说明找到 

 

       var arr=[1,90,100,123,4000];

 

       functionbinarySearch(findVal,arr,leftIndex,rightIndex){

             

 

              //退出条件

              if(rightIndex<leftIndex){

                     document.write("查询没有结果");

                     return;

              }

 

              //代码:

              //找到中间数的下标

              varmidIndex=Math.round((leftIndex+rightIndex)/2);

 

              if(arr[midIndex]<findVal){

                     binarySearch(findVal,arr,midIndex+1,rightIndex);

              }elseif(arr[midIndex]>findVal){

                 binarySearch(findVal,arr,leftIndex,midIndex-1);

              }else{

                     document.write("找到 下标是"+midIndex);

                     //binarySearch(findVal,arr,leftIndex,midIndex-1);

              }

 

       }

 

       //调用的格式

       binarySearch(100,arr,0,arr.length-1);

 




原创粉丝点击