1. 程式人生 > >JS 索引陣列、關聯陣列和靜態陣列、動態陣列

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即可.