当前位置: 代码迷 >> 综合 >> Web---JavaScript---②数组与函数
  详细解决方案

Web---JavaScript---②数组与函数

热度:31   发布时间:2023-10-21 17:20:13.0

数组

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>JS语言---数组演示</title><script type="text/javascript">//JS中的数组非常重要,因为JS中只有一个容器---数组,它是Java中的数组与集合的综合//JS中的数组长度可变,元素类型任意///数组定义方式1: 定义时直接赋初值function a1() {var arr = [1,2,3];  //※与Java不一样的地方1:  类型中没有"[]",数据是用"[]"封装   ,Java方式是: int[] arr={1,3,5}//alert( typeof(arr) ); //objectalert( arr) ; //1,3,5  js中可以直接用数组名来输出它的内容var sum = arr[0] + arr[2]; //对数组元素的引用和Java是一样的alert( "arr[0]+arr[2]=" + sum ); //arr[0]+arr[2]=4}function a2() {var arr = [1,2,3];//※JS的数组有集合的功能,长度可以自动增长arr[5] = 7;alert( arr ); //1,2,3,,,7//可以用arr.length读取数组当前的长度alert( "变长后数组长度:"+arr.length ); // 变长后数组长度:6alert( arr[4] ); //undefined//※JS的数组有集合的功能,元素类型可以任意arr[3] = "abc";arr[4] = 3.14;alert( arr );}function a3() {//可以先声明一个空数组,然后往里面不断赋值,因为JS中的数组长度是可变的var arr = [];arr[0] = 10;arr[2] = 4;arr[4] = true;arr[1] = "abc";arr[3] = "12.3";alert( arr );}///数组定义方式2: 用new对象的方式创建function b1() {var arr = new Array(1,3); //等价于 var arr = [];arr[0] = 3.14;arr[1] = true;arr[2] = 10;arr[3] = "abc";alert( arr );}function b2 () {/*在创建时给参数:1个参数时是长度,2个及以上参数为元素初始值*/var arr = new Array( 3 );alert( arr + "--数组长度:" + arr.length );var arr = new Array( 1, 2 );alert( arr + "--数组长度:" + arr.length );}function c() {//二维数组var arr = [];arr[0] = [1,false,3];arr[1] = [3.14,2];arr[2] = "abc1223"; arr[3] = true;for ( var i = 0; i < arr.length; i++ ) {for ( var j = 0; j < arr[i].length; j++ ) {document.write( arr[i][j] +"  " );}document.write( "<br />" );}document.write( arr[3] +"  " );}</script></head><body><input type="button"  value="定义方式1-演示1" οnclick="a1();" /><input type="button"  value="定义方式1-演示2" οnclick="a2();" /><input type="button"  value="定义方式1-演示3" οnclick="a3();" /><input type="button"  value="定义方式2-演示1" οnclick="b1();" /><input type="button"  value="定义方式2-演示2" οnclick="b2();" /><input type="button"  value="演示二维数组" οnclick="c();" /></body>
</html>

函数

定义函数格式:

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">/* js中定义函数的格式:function 函数名(参数列表){ //注意Java是“参数类型列表”函数体;[return 返回值;]}*///1 无参无返回值的函数function a1(){alert("aa...");}//2 有参有返回值function add(a, b){var s = a+b;return s;}function a2(){var ab = add(100,200);alert("ab="+ ab );}</script></head><body><input type="button" value="演示1" οnclick="a1();"> <input type="button" value="演示2" οnclick="a2();"> </body>
</html>

函数使用细节

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>JS语言演示---函数讲解2</title><script type="text/javascript">/* js函数的一些小细节---与Java不一样的地方:1. 函数调用与参数js中的函数不存在重载。定义了函数,只要通过该函数名就可以调用它,调用不调用跟参数没有关系。参数匹配时,对应参数有数据传递时就接收,没有就是undefined,多余的就不接收。js中的函数只以函数名来识别调用,跟参数没关系,参数只是用于传递数据。每个函数内部都有一个arguments[]用于接收并存储所有实参,不管函数定义时的参数列表有没有  定义或接收。*/function show(x,y){alert(x+","+y);}function a1(){show(1,8); //1,8show(1); //1, undefinedshow(1,2,3); //1,2show("aa",0.6,3); //aa,0.6}function show2(x,y){alert(x+","+y);for(var i=0; i<arguments.length;i++){document.write(arguments[i]+" ");}}function a2(){show2("aa", 0.6, 3, true); }</script><script type="text/javascript">/* js函数的一些小细节---与Java不一样的地方:2. 函数有别名函数名只是函数对象的一个引用(变量),同一个函数对象可以有多个引用指向它(非声明时的名称就是别名),通过别名可以和原函数名一样访问该函数对象。*/function getNum(){return 100;}function b1(){var v = getNum();alert( v );}function b2(){//alert(getNum); //getNum.toString()var aa=getNum;//alert( aa ); //aa.toString()alert( aa() ); //aa()和getNum()效果一样}</script></head><body><input type="button" value="演示1-1" οnclick="a1();"> <input type="button" value="演示1-2" οnclick="a2();"> <input type="button" value="演示2-1" οnclick="b1();"> <input type="button" value="演示2-2" οnclick="b2();"> </body>
</html>
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>JS语言演示---函数讲解3</title><script type="text/javascript">/* 可以用new的方式创建函数 ---动态函数,功能类似于Java中的类反射   */function a1(){var add = new Function("x,y","var sum; sum=x+y; return sum;");var s = add(10,20);alert("s="+s);}function a2(){var p1 = document.getElementById("param").value;var p2 = document.getElementById("fun1").value;var f = new Function(p1,p2);alert( f(10,20) );}//JS的函数内部可以再定义函数,而Java不允许这样//匿名函数function a3(){var abc = function(a,b){return a*b;};/*上面的代码等价于:function ff(a,b){return a*b;}var abc = ff;*/alert( abc(2,5) ); //通过别名调用匿名函数}function a4(){/*以后事件注册时写成下面形式btnObj.οnclick=function(){函数体.....};*/var btnObj = document.getElementById("btn1");btnObj.οnclick=function(){alert("aaaa....");};alert("功能添加完毕!");}</script></head><body><input type="button" value="演示1" οnclick="a1();"> <br/><br/>参数列表:<input type="text" id="param"/> <br/>函数体:<input type="text" id="fun1"/> <br/><input type="button" value="演示2" οnclick="a2();"> <br/><br/><input type="button" value="匿名函数" οnclick="a3();"> <br/><br/><input type="button" value="没功能" id="btn1">   <input type="button" value="以后注册事件响应时常用匿名函数--给btn1注入功能" οnclick="a4();"> <br/><br/></body>
</html>

数组与函数结合练习

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title><script type="text/javascript">function getMax( arr ){if ( typeof( arr ) == "undefined" ) {return undefined;}var max;if( arr.length > 0 ) {max = arr[0];for( var i = 1; i < arr.length; i++ ) {if ( arr[i] > max ){max = arr[i];}}}return max;}function sortArray( arr ){if ( typeof( arr ) == "undefined" ) {return undefined;}for ( var i = 0; i < arr.length - 1 ; i++ ) {for ( var j = i + 1; j < arr.length ; j++ ){if ( arr[i] > arr[j] ) {swap( arr, i , j );}}}alert( arr );}function swap( arr, x, y ){if ( typeof( arr ) == "undefined" ) {return ;}var temp = arr[x];arr[x] = arr[y];arr[y] = temp;}function searchElement( arr, val ){if ( typeof( arr ) == "undefined" ) {return undefined;}for ( var i = 0; i < arr.length; i++ ) {if( arr[i] == val ){return i;}}return -1;}function binarySearch( arr, val ){if ( typeof( arr ) == "undefined" ) {return undefined;}var left = 0;var right = arr.length - 1;var mid = Math.round( ( left + right ) / 2 - 0.5 );while ( left <= right ){if ( arr[mid] > val ){right = mid - 1;} else if ( arr[mid] < val ) {left = mid + 1;} else {return mid;}mid = Math.round( ( left + right ) / 2 - 0.5 );}return -1;}function reverseArray( arr ){if ( typeof( arr ) == "undefined" ) {return undefined;}var left = 0;var right = arr.length - 1;while ( left < right ) {swap( arr, left, right );left++;right--;}}var arr = [ 1,-3,10,2.14,6666,-77777 ];alert( getMax(arr) );alert( searchElement( arr, -4 ) );reverseArray( arr );alert("反转后:" + arr );sortArray( arr );alert( binarySearch( arr, 10 ) );</script></head><body><pre>写一些具有如下功能的函数: getMax(arr), sortArray(arr), searchElement(arr,val), binarySearch(arr,val)reverseArray(arr) 数组内容反转</pre></body>
</html>
  相关解决方案