捐血一袋救人一命

2024年3月13日 星期三

Powershell 變數型態_Array

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             

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_arrays?view=powershell-7.3

0 意見: