javascript 引用類型 - Array與數據結構和重排序

ECMAScript 和其他語言一樣,也是有類似數據結構的方法和行爲,可以利用數組的下面幾個方法,可以像數據結構一樣使用數組 。
unshift() 方法可以接受任意參數,把他們逐個添加到數組前端,並返回修改後的數值長度。
push()方法可以接受任意參數,把他們逐個添加到數組末尾,並返回修改後的數值長度。
shift()方法從數組前端移除最先的一項,減少數組的length值,然後返回移除項。
pop()方法從數組末尾移除最後一項,減少數組的length值,然後返回移除的項。

棧方法
數據可以表現得像棧一樣(後進先出),可以限制插入和刪除項的數據結構。在棧中項的插入(叫做推入)和移除(叫做彈出),只發生在一個位置--棧的頂部。所以ECMAScript爲數組專門提供了push()和pop()方法,實現類似棧的行爲。

隊列方法
隊列的數據結構的訪問規則是先進先出,在隊列的列表的末端添加項,從列表的前端移除項。可以結合push()和sthift()方法,可以像隊列一樣使用數組。

重排序
默認數組定義後,會按照定義的順序排序,也可以用兩個重排序的方法排序:reverse() 和sort()。通常情況下,reverse() 和sort()方法會調用每個數組項的toString()轉型方法,然後比較得到的字符串,以確定如何排序。
關於這個,需要探討javascript 中的數組排序函數sort()和reverse(),因爲官方說明,這兩個排序函數是可以帶有參數的,而且這個參數必須是個函數。

function compare(v1,v2){
if(v1<v2){
return -1;
}else if(v1>v2){
return 1;
}else{
return 0;
}
}
var valuees=[0,1,10,15,5,30];

valuees.sort(compare);    // 返回的結果[0, 1, 5, 10, 15, 30]

要說明一下,排序算法是離不開冒泡算法的,這裏同樣是使用了冒泡算法。逐個比較兩個項,如果返回-1,則交換升級位置。其實上面例子的方法可以用一個跟個簡單的比較函數來表示。就是這個函數只要返回第二個值減去第一個值。
function compare(v1,v2){
return v2-v1;
}









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章