JS 索引数组、关联数组和静态数组、动态数组  




数组分类:

1、从数组的下标分为索引数组、关联数组



/* 索引数组,即通常情况下所说的数组 */
var ary1 = [1,3,5,8];
//按索引去取数组元素,从0开始(当然某些语言实现从1开始)
//索引实际上就是序数,一个整型数字
alert(ary1[0]);
alert(ary1[1]);
alert(ary1[2]);
alert(ary1[3]);

/* 关联数组,指以非序数类型为下标来存取的数组  python中称为字典 */
var ary2 = {};
//存取时,以非序数(数字),这里是字符串
ary2["one"] = 1;
ary2["two"] = 2;
ary2["thr"]  = 3;
ary2["fou"] = 4;

2、从对数据的存储分为静态数组、动态数组


/* java中的静态数组 */ Int[] ary1 = {1,3,6,9};//定义后数组的长度固定了不能改变,按索引取数组元素   /* java中的动态数组  (java中的ArrayList实现是以Array为基础的,这里说动态数组是广义的,不管采用什么方式实现。不要较劲)  */ List<Integer> ary2 = new ArrayList<Integer>(); ary2.add(1);//可以动态的添加元素,数组的长度也随着变化 ary2.add(3); ary2.add(6);


/* js的数组属于动态数组 */
var ary = [];//定义一个数组,未指定长度
ary[0] = 1;//可以动态的添加元素
ary.push(3);
ary.push(5);

alert(ary.join(","));//输出1,3,5

js的数组同时属于索引数组和动态数组,因为本质上它就是一个js对象,体现着js动态语言特性。但js的索引数组并非“连续分配”内存的,因此索引方式并不会带来很高的效率。而java中的数组则是连续分配内存的。

Array 对象sort 方法


描述:


返回一个元素已经进行了排序的 Array 对象.



语法:


sort() 默认对 字符传进行排序.


arrayobj.sort(sortfunction)


如要求结果是10、16、120这样的数字大小排序,应该使用下面的程序:


<SCRIPT language=JavaScript> 
  
 var a=new Array(3); 
  
 a[0]=10; 
  
 a[1]=16; 
  
 a[2]=120; 
  
 a.sort(function(x,y){return parseInt(x)-parseInt(y);}); 
  
 document.write(a+" "); 
  
 </SCRIPT>

 


function(x,y)是具体实现排序功能的函数, 上面的方法是实现升序,如果想实现降序,可以改下返回结果:return parseInt(y)-parseInt(x);


当然如果想实现字符串的排序,则可以直接使用a.sort(param);即sort(param) 默认对字符串进行排序,参数为一函数,如果省略该参数,则那么元素将按照 ASCII 字符顺序进行升序排列.当然也可以实现对Long型数据排序,将parseInt改为parseLong即可.