u 数组(引用类型/复杂类型/复合类型),

① 数组的基本概念,用于存放一组数据。

② 特别强调:js中的数组,可以存放各种数据类型(数值、字串)

例如:

<script language="javascript" type="text/javascript">

/*

王大爷有6只乌龟,他们的体重分别是3kg,5kg,1kg,

3.4kg,2kg,50kg. 请问这六只违规的总体重是多少?

平均体重是多少?请你用现在账务的技术编一个程序解决

*/

//使用传统的方法,来解决问题,很麻烦。

/*var weight1=3;

var weight2=5;

var weight3=1;

var weight4=3.4;

var weight5=2;

var weight6=50;

var all_weight=weight1+weight2+weight3+weight4+weight5+weight6;

*/

var weights=[3,5,1,3.4,2,50];

var all_weight=0;

var avg_weight=0;

//数组的便利

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

all_weight+=weights[i]

}

avg_weight=all_weight/weights.length;

//如果想知道,数据类型

window.alert(avg_weight.constructor);

document.writeln("总体重是:"+all_weight+"平均体重"+avg_weight.toFixed(2));//num.toFixed(2),截取到小数点后2位数

&lt;/script>

③ 数组的细节、

⑴ 基本用法:

var 数组名=[元素值,元素值,….];

元素的值可以是任意类型

Var an=[4,56,”hello,word”,true]

数组在内存中的存在形式

⑵ js中的数组是引用传递

举例说明:

var myarr=[456,90,900];

function abc2(arr){

arr[0]=35;

}

abc2(myarr);

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

document.writeln(myarr[i]);

}

原理图

第27-28讲 js一维数组 一维数组细节

⑶ 数组的引用

基本用法:

数组的名称[下标];

比如:

var a=[23,”hello”,4.5]

我们访问a[2] 则输出4.5

如果我们访问a[3] 则输出undefine

结论:不能访问不存在的元素

数组的下表从0开始编号的

比如var a=[23,”hello”,4.5]

a[0]=23;

a[1]=”hello”;

a[3]=4.5;

⑷ js的数组可以动态增长

var a=[2,3];

window.alert("size="+a.length);

//动态的增长

a[2]=56

window.alert("size="+a.length);

alert(a[2]);

⑸ 对字符串分割,生成一个字符串数组

var str="hello world abc 顺平"

var arr=str.split(" ");

//var arr=str.split("");

//var arr=str.split(" ",2);

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

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

}

⑹ 遍历数组

var arr=[45,90,0];

arr['gg']=9000;//下标的位置可以用字符串

for(var key in arr){

window.alert(key+"="+arr[key]);

}

第28讲 js二维数组 js冒泡排序 二分查找

一维数组小节

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

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

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

④ 数组元素从0开始编号的。

◆多维数组-二维数组

举例:

var arr=[[“shunping”,123,4,5],[“a”,”b”,”c”]]

看看如何遍历二位数组,以及转置

var arr=[[2,4,6,8],[8,9,0,-1],[9,6,2,1]]

//定义一个新的数组

var arr2=[];

//初始化,定下有多行

for(var i=0;i&lt;arr[0].length;i++){

arr2[i]=[];

}

//可以动态的添加数据

//遍历旧的数组

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

for(var j=0;j&lt;arr[i].length;j++){

arr2[j][i]=arr[i][j];

}

}

//成功!遍历arr2数组就是一个转置数组

for(var i=0;i&lt;arr2.length;i++){

for(var j=0;j&lt;arr2[i].length;j++){

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

}

document.writeln("&lt;br/>");

}

◆数组的排序;

冒泡:

var arr=[5,0,-56,900,12,9000,-123,-1000];

var flag=false;

//大的排序次数(arr.length-1)

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

document.writeln("大循环。。。&lt;br/>");

//小的排序

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

if(arr[j]>arr[j+1]){

//交换

var temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

flag=true;

}

}

if(flag){

flag=false;

}else{

break;

}

}

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

document.writeln(arr[i]+"&nbsp;");

}

查找

这里我们讲解二分查找:

● 二分查找

var arr=[1,4,6,8,9,90,800];

//思路:找到数组的中间数(midVal),和你要查找的数进行比较,如果大于

//midVal>findVal则书名findVal在数组的左边,就把该数组二分(就只在左边查找)

function binarySearch(arr,findVal,leftIndex,rightIndex){

//进行查找有一个前提,防止无穷递归

if(leftIndex&gt;rightIndex){

//提示找不到

document.writeln("找不到");

return;

}

//找到中间这个值

var midIndex=Math.floor((leftIndex+rightIndex)/2); //※javascript的/不是整除,有余数

//∴需要Math.floor向下取整。

var midVal=arr[midIndex];

//比较

if(midVal&gt;findVal){

//在左边找

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

}else if(midVal&lt;findVal){

//在右边找

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

}else{

document.writeln("找到 下标为"+midIndex);

return;

}

}

//测试

binarySearch(arr,90,0,arr.length-1)

转载于:https://blog.51cto.com/dwt1220/729832

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-20
  • 2021-09-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-16
猜你喜欢
  • 2022-12-23
  • 2021-09-07
  • 2021-09-27
  • 2021-12-04
  • 2022-12-23
相关资源
相似解决方案