Javascript 数组
Javascript中数组有何特点?
1、数组元素可以是大杂烩,不必是清一色
<script language="javascript">
//测试1
function test1(){
var d = new Date();
var arr = ['test', 'is','ok',3,d];
alert(arr[4]);
}
test1();
</script>
2、数组本身就是对象
//测试2
function test2(){
var arr = [];
arr['1'] = 'test';
arr['2'] = 'is';
arr['3'] = 'ok';
alert(arr[2]);
}
test2();
//测试2b
function test2b(){
var arr = [];
arr['a'] = 'test';
arr['b'] = 'is';
arr['c'] = 'ok';
alert(arr[2]);
alert(typeof arr);
}
test2b();
测试2的结果是什么呢? 结果是‘is',可见数组索引数值和字符串型数值具有同样的功能。
测试2b的结果是什么呢?结果是undefined。‘a', 'b', 'c'作为arr的属性,保存在arr对象中。
3、数组也可以像Java一样排序
数组有sort() 方法,可以对数组进行排序。但若数组是由混合类型(如上述第1点中的数组)时,如何比较呢?答案是你可以自定义比较函数。
//测试1
function test1(){
var d = new Date();
var arr = ['test', 'is','ok',30,'4',d];
arr.sort();
alert(arr.join(','));
//数据转换
function convert(a){
if(typeof a == 'number'){
a = a + '';
}else if (typeof a == 'object'){
if(/Date/.test(a.constructor)){
//alert('here');
a = a.getTime() + '';
}
}
return a;
}
//排序比较函数
function compare(a,b){
var c = convert(a);
var d = convert(b);
//alert('a:' + c + ',b:' + d);
if(c>d){
return 1;
}else if(c<d){
return -1;
}else{
return 0;
}
}
arr.sort(compare);
alert(arr.join(','));
}
test1();
</script>