Array
- 同一陣列內,可以混合儲存各種形態資料
- 陣列起始註標為 0
陣列的表示法
$a1 = 1..3
$a2 = 1,2,3
$a3 = @(1,2,3)
$a4 = (1..3), "ABC", (7..9), @{'name'="tom"; "age"=51}
Result
$a4[0] = 1, 2, 3
$a4[1] = "ABC"
$a4[2] = 7, 8, 9
宣告空陣列
$a5 = @()
$a5.Count -eq 0 # True
只有一個變數值,要設定為陣列
$a6 = , "Hello"
$a7 = @("Hello")
# 輸出 $a6 變數註標值為0的元素
$a6[0]
# 輸出 $a7 變數註標值為0的元素
$a7[0]
$a6.GetType()
$a7.GetType()
Result:
Hello
Hello
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
True True Object[] System.Array
反向取得陣列值
$array = "Tom", "Kate", "Dylan"
$array[-1] # 陣列最後一個值
$array[-2] # 陣列倒數第二個值
Result:
Dylan
Kate
計算陣列中符合條件值的數量(篩選等於 100,再計算 Count)
$a8 = @(100, 59, 95, 60, 100, 88, 76)
($a8 -eq 100).Count # 統計滿分人數
Array 元素的增加
雖然 Array 有 Add Method,但是當你使用 Add() 時,會出現"集合屬於固定大小"的錯誤
所以當你要在 Array 增加元素時,請使用數學運算 +
$a=@()
$a += 1
$a.GetType()
$a.Add(5)
$a += 5
$a
Result:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
以 "1" 引數呼叫 "Add" 時發生例外狀況: "集合屬於固定大小。"
位於 線路:4 字元:1
+ $a.Add(5)
+ ~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : NotSupportedException
1
5
雖然空一格,但不占空間
$a = @(1,2,3, ,5)
$a.count
$a
Result
4
1
2
3
5
Array 元素的減少
$a = @(1,2,3,4,5,6,7,8,9)
# 用註標來選擇
$a = $a[1,3,5]
$a
Result:
2
4
6
移除陣列中的空字串
# 宣告一個陣列
$a = @(1, 2, "", 4)
# 以下三種方法都可以移除空字串
$a = $a.Where( { $_ -ne ""} )
$a = $a | Where-Object { $_ -ne "" }
$a = $a -ne ""
Arrary 與 ArrayList 型態互換
$a = @()
$a.GetType()
# 將 [System.Array] 轉換成 [System.Collections.ArrayList]
$a = [System.Collections.ArrayList]$a
$a.GetType()
# [System.Collections.ArrayList] 轉換成 [System.Array]
$a = [System.Array]$a
Result:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
True True ArrayList System.Object
0 意見:
張貼留言