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>





郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。