数组(引用类型,有的人又称作为复杂/复合类型)
数组的概念:用于存放一组数据的集合
案例:求几只鸡的平均重量
<script language="javascript" type="text/javascript">
var weights=[10,12,10,12.3,4.5
];
var all_weight=0
;
var average_weight=0
;
//数组的遍历
for(
var i=0;i<weights.length;i++
){
all_weight+=
weights[i];
document.writeln(weights[i]);
}
document.write("平均的重量是:" + (all_weight / weights.length).toFixed(1
));
//toFixed方法是可以将Number四舍五入成制定的小数位。具体的见http://www.w3school.com.cn/jsref/jsref_tofixed.asp
</script>
注意:1
)在js中的数组是由一对[]包围的,不是花括号{}。
2
)在js中的数组中并不区分类型,可以存放任何数组类型(例如可以同时放数值,字符串等等);
基本用法:
var 数组名=
[元素值](元素可以是任意的类型)
******
案例:
var a=10
;
function test(b){
b=3
;
}
test(a);
window.alert(a);//10
这里的值没有改变的原因是调用test函数时,会开辟一个新的栈,将a的值赋给b,改变的是这个栈中b的值,
a的值没有发生改变。
js的数组可以动态增长(类似于java中的集合),例如:
var a=[2,3
];
a[2]=3
;
window.alert(a.length);//3
String中的spilt()方法将字符串分割成字符串数组:
var str="js is fun!"
;
var array=str.split(" "
);
for(
var i=0;i<array.length;i++
){
document.writeln(array[i] + "<br/>"
);
/*
js
is
fun!
如果改成split("");则会不一样
*/
}
window.alert(array.length); //3
注意:在括号后可以加数组,对返回的数组的长度进行限定,例如
split(" ",2
);则上边返回的是[js,is];
在js中存在另外的一种遍历数组的方式:for(
var key
in array){}
<script language="javascript" type="text/javascript">
var str="ni shi yige sha bi a"
;
var array=str.split(" "
);
for(
var i=0;i<array.length;i++
){
document.writeln(array[i] + "<br/>"
);
}
str["gg"]=12
;
for(
var key
in array){
document.write( "下标:" + key + " 值:" + array[key] + "<br/>"
);
}
window.alert(array.length);
</script>
同时这个案例也是说明了js中的数组的下边不一定是数值,也可以是字符串。(一般的按照数组排列)
二维数组:
*****案例:将一个矩阵进行转置***
script language="javascript" type="text/javascript">
var array1=[[1,2,3,4],[5,3,2,4],[7,8,9,0
]];
var array2=[];
//定义一个新的数组
for(
var i=0;i<array1[0].length;i++
){
array2[i]=[];
//对这个数组进行初始化,定义有多少行
}
//遍历原来的矩阵,并对新的数组进行赋值
for(
var i=0;i<array1.length;i++
){
for(
var j=0;j<array1[0].length;j++
){
array2[j][i]=
array1[i][j];
}
}
//成功!遍历这个新的数组,同时进行打印
for(
var i=0;i<array2.length;i++
){
for(
var j=0;j<array2[0].length;j++
){
document.write(array2[i][j] + " "
);
}
document.writeln("<br/>"
);
}
</script>