asp陣列是比較好用的裝載大量資料的容器。
1 定義陣列
有兩種方式:dim和redim。
dim定義的是固定個數、資料型別的陣列;而redim則不同,它可以定義不同型別的資料,也可以定義個數並非固定的資料。比較下面幾個例子。 都合法的例子:
dim myarray(5,2)
redim myarray(5,2)
前者錯誤而後者合法的例子:
n=10 n=10
dim myarray(n)
redim myarray(n,2)
另外redim還可以定義未定型別的陣列,如:redim myarray(10)
2 陣列個數
在以dim或redim定義陣列時指定的下標,表示的是訪問該陣列時所容許的最大下標,卻不是該陣列的個數。實際上,一維陣列個數總是等於(最大下標+1),訪問時是通過下標從0開始逐個訪問的。
比如:dim myarray(5) 定義的陣列元素有6個,分別是:myarray(0)、myarray(1)、myarray(2)、myarray(3)、myarray(4)、myarray(5)。
再如:redim thisarray(2,5)實際上定義了乙個(2+1)*(5+1)=1 8的二維陣列。
既然如此,那麼,可不可義定義乙個只有乙個元素的陣列呢?答案是:不可以。
如前所說,redim thisarray(1)定義的陣列實際上有(1+1)個陣列元素,但類似於: redim thisarray(0)的語法,錯誤的。所以,不能定義乙個只有乙個陣列元素的陣列。 其實,以上說的只是其預設狀況。其實,定義陣列可以通過定義下標的起止從而達到定義陣列的個數甚至下標的起止編號的。比如:redim thisarray(1980 to1990)就 定義了乙個含有11個元素的陣列,下標從1980到1990。
3 關於ubound函式
ubound返回的是一維陣列的最大下標,而不是元素個數。 比如:dim myarray(5),那麼ubound(myarray)返回的值是5,而不是6。 ubound也可以應用於二維陣列。應用於二維陣列時,它返回的是第乙個下標的最大值。
比如:dim myarray(6,3),
那麼ubound(myarray)返回的值是6,而不是7,更不是18(6*3=18)。
若要返回第二個下標的最大值,則使用:ubound(myarray,2)。
與ubound相對應的是另外乙個函式:lbound,它返回陣列的最小下標。與ubound類似,lbound(myarray,2)則返回陣列myarray的第二個下標的最小值。所以,準確地說,一維陣列myarray的元素個數為:ubound(myarray)-lbound(myarray)+1,而二維陣列的元素個數則為:
(ubound(myarray)-lbound(myarray)+1)*(ubound(myarray,2)-lbound(myarray,2)+1)
多維陣列依此類推。
4. 陣列的定義
dim myarray
myarray = array(1,5,123,12,98)
可擴充套件陣列
dim myarray()
for i = 0 to 10
redim preserve myarray(i)
myarray(i)=i
next
將乙個字串分割並返回分割結果的陣列
dim myarray
myarray = split(tempcnt,chr(13)&chr(10))
for i = lbound(myarray) to ubound(myarray)
response.write myarray(i) & "
" next
5.陣列排序函式
function sort(ary)
keepchecking = true
do until keepchecking = false
keepchecking = false
for i = 0 to ubound(ary)
if i = ubound(ary) then exit for
if ary(i) > ary(i+1) then
firstvalue = ary(i)
secondvalue = ary(i+1)
ary(i) = secondvalue
ary(i+1) = firstvalue
keepchecking = true
end if
next
loop
sort = ary
end function
陣列排序函式應用例子
dim myarray
myarray = array(1,5,123,12,98)
myarray = sort(myarray)
for i = lbound(myarray) to ubound(myarray)
response.write myarray(i) & "
" next
這種方法被我經常用於**的函式整合中。
dim myarray
取出全部記錄
myarray = rs.getrows
取出前10項記錄
myarray = rs.getrows(10)
for row = 0 to ubound(myarray, 2)
for col = 0 to ubound(myarray, 1)
response.write (col, row) & "
" next
next
多維陣列變一維陣列
判斷是否是陣列 let isarr arr arr instanceof array 判斷是否一維陣列 let istdim arr arr.reduce o1,o2 o1 isarr o2 true 多維陣列變一維陣列function name return a console.log name ...
一維陣列變多維陣列
1.雙層filter過濾 第一層 item 定義為father newarr接收 第一層過濾出最頂層陣列 判斷 brancharr的長度 存在father.children brancharr 否則為空 return father.pid 0 第二層 item 定義為child brancharr接...
C Array 陣列 一維 多維陣列
專題圖 編號 ylbtech dotnet100010012 1,array 提供一些方法,用於建立 處理 搜尋陣列並對陣列進行排序,從而充當公共語言執行時中所有陣列的基類。命名空間 system 程式集 mscorlib 在 mscorlib.dll 中 2,syntax 語法 serializa...