ค้นหาเว็บไซต์

อาร์เรย์ PowerShell ของ Hashtables


ในการเขียนสคริปต์ PowerShell โครงสร้างข้อมูลมีความสำคัญในการจัดระเบียบและจัดการข้อมูล โครงสร้างสองแบบที่ใช้กันอย่างแพร่หลายคืออาร์เรย์และแฮชเทเบิล แม้ว่าอาร์เรย์จะเป็นชุดของรายการ แต่ hashtable คือชุดของคู่คีย์-ค่า เมื่อรวมโครงสร้างทั้งสองนี้เข้าด้วยกัน เราสามารถสร้างเครื่องมืออันทรงพลังที่เรียกว่าอาร์เรย์ของแฮชเทเบิลได้ ในบทช่วยสอน PowerShell นี้ ฉันจะอธิบายว่าอาร์เรย์ของแฮชเทเบิลคืออะไร รวมถึงวิธีสร้างและจัดการอาร์เรย์เหล่านั้นด้วยตัวอย่าง

ใน PowerShell อาร์เรย์ของ hashtables คือคอลเลกชันที่แต่ละองค์ประกอบเป็น hashtable ซึ่งช่วยให้มีโครงสร้างข้อมูลที่ซับซ้อนด้วยคู่คีย์-ค่า คุณสามารถสร้างได้โดยการกำหนดอาร์เรย์และเพิ่มแฮชเทเบิลลงไปโดยใช้ตัวดำเนินการ += หรือไวยากรณ์ตามตัวอักษรของอาร์เรย์ โครงสร้างนี้มีประโยชน์สำหรับการจัดเก็บชุดข้อมูลที่เกี่ยวข้องในลักษณะที่มีการจัดระเบียบและเข้าถึงได้

Hashtable ใน PowerShell คืออะไร

แฮชเทเบิลคือโครงสร้างข้อมูลที่จัดเก็บข้อมูลในรูปแบบของคู่คีย์-ค่า แต่ละรายการในแฮชเทเบิลมีคีย์เฉพาะที่เกี่ยวข้องกับค่า ทำให้ง่ายต่อการดึงหรืออัปเดตค่าตามคีย์ มักจะถูกเปรียบเทียบกับพจนานุกรมหรืออาเรย์แบบเชื่อมโยงเนื่องจากความสัมพันธ์ของคีย์-ค่านี้

อาร์เรย์ใน PowerShell คืออะไร

ในทางกลับกัน อาร์เรย์ใน PowerShell คือชุดของรายการที่จัดเก็บไว้ในตำแหน่งหน่วยความจำที่อยู่ติดกัน องค์ประกอบของอาร์เรย์ได้รับการจัดทำดัชนี ซึ่งหมายความว่าแต่ละตำแหน่งในอาร์เรย์จะมีดัชนีตัวเลขเริ่มต้นจาก 0

รวม Hashtables และ Arrays ใน PowerShell

อาร์เรย์ของแฮชเทเบิลใน PowerShell เป็นเพียงอาร์เรย์ที่แต่ละองค์ประกอบเป็นแฮชเทเบิล โครงสร้างนี้มีประโยชน์อย่างเหลือเชื่อเมื่อคุณต้องการจัดเก็บข้อมูลที่เกี่ยวข้องหลายชุด

สร้างอาร์เรย์ของ Hashtables

หากต้องการสร้างอาร์เรย์ของแฮชเทเบิลใน PowerShell คุณต้องเข้าใจวิธีสร้างแฮชเทเบิลเดี่ยวและอาร์เรย์ก่อน ต่อไปนี้เป็นวิธีสร้างแฮชเทเบิลแบบง่าย:

$hashtable = @{
    Key1 = 'Value1'
    Key2 = 'Value2'
    Key3 = 'Value3'
}

หากต้องการสร้างอาร์เรย์ คุณสามารถทำสิ่งต่อไปนี้:

$array = @('Item1', 'Item2', 'Item3')

ตอนนี้ เพื่อสร้างอาร์เรย์ของแฮชเทเบิล คุณต้องรวมสองแนวคิดเข้าด้วยกัน:

$arrayOfHashtables = @(
    @{
        Key1 = 'Value1'
        Key2 = 'Value2'
    },
    @{
        Key3 = 'Value3'
        Key4 = 'Value4'
    }
)

ในตัวอย่างนี้ $arrayOfHashtables เป็นอาร์เรย์ที่มีสององค์ประกอบ ซึ่งแต่ละองค์ประกอบเป็น hashtable

เข้าถึงข้อมูลในอาร์เรย์ของ Hashtables

ในการเข้าถึงข้อมูลในอาร์เรย์ของแฮชเทเบิล คุณจะต้องระบุดัชนีของอาร์เรย์ ตามด้วยคีย์ของแฮชเทเบิล ตัวอย่างเช่น:

$arrayOfHashtables = @(
    @{
        Key1 = 'Value1'
        Key2 = 'Value2'
    },
    @{
        Key3 = 'Value3'
        Key4 = 'Value4'
    }
)
# Access the value of Key1 in the first hashtable
$value = $arrayOfHashtables[0].Key1

เมื่อคุณรันโค้ดแล้ว คุณจะเห็นผลลัพธ์ในภาพหน้าจอด้านล่าง:

การเพิ่มและการลบรายการ

หากต้องการเพิ่ม hashtable ใหม่ให้กับอาร์เรย์ คุณสามารถใช้ตัวดำเนินการ +=:

$arrayOfHashtables += @{
    Key5 = 'Value5'
    Key6 = 'Value6'
}

หากต้องการลบรายการออกจากอาร์เรย์ คุณสามารถใช้วิธี Remove หากคุณทราบดัชนี:

$arrayOfHashtables = $arrayOfHashtables | Where-Object { $_ -ne $arrayOfHashtables[1] }

สิ่งนี้จะลบแฮชเทเบิลตัวที่สองออกจากอาร์เรย์

แก้ไข Hashtables ในอาร์เรย์

หากต้องการแก้ไขแฮชเทเบิลภายในอาร์เรย์ ให้เข้าถึงแฮชเทเบิลด้วยดัชนี จากนั้นใช้คีย์เพื่อแก้ไขค่า:

# Change the value of Key2 in the first hashtable
$arrayOfHashtables[0].Key2 = 'NewValue2'

วนซ้ำอาร์เรย์ของ Hashtables

คุณสามารถวนซ้ำแต่ละแฮชเทเบิลในอาร์เรย์ได้โดยใช้ลูป foreach:

foreach ($hashtable in $arrayOfHashtables) {
    foreach ($key in $hashtable.Keys) {
        $value = $hashtable[$key]
        Write-Host "$key: $value"
    }
}

สิ่งนี้จะพิมพ์คู่คีย์-ค่าทั้งหมดในแต่ละแฮชเทเบิล

ตัวอย่างการปฏิบัติของอาร์เรย์ของ Hashtables ใน PowerShell

ลองพิจารณาตัวอย่างเชิงปฏิบัติที่เรามีรายชื่อพนักงานและคุณลักษณะของพวกเขาที่จัดเก็บเป็นแฮชเทเบิลในอาร์เรย์ใน PowerShell:

$employees = @(
    @{
        Name = 'John Doe'
        Department = 'IT'
        Position = 'Developer'
    },
    @{
        Name = 'Jane Smith'
        Department = 'HR'
        Position = 'Recruiter'
    }
)

หากต้องการค้นหาตำแหน่งพนักงานที่เฉพาะเจาะจง คุณสามารถดำเนินการดังต่อไปนี้:

$employeeName = 'John Doe'
$position = ($employees | Where-Object { $_.Name -eq $employeeName }).Position
Write-Host "The position of $employeeName is $position."

บทสรุป

อาร์เรย์ของแฮชเทเบิลใน PowerShell มีประโยชน์ในการจัดเก็บข้อมูลที่ซับซ้อน ช่วยให้คุณจัดการคอลเลกชันของคู่คีย์-ค่าได้อย่างมีประสิทธิภาพ โดยสามารถเข้าถึง เพิ่ม ลบ และแก้ไขข้อมูลได้อย่างง่ายดาย

ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายทุกอย่างเกี่ยวกับ อาร์เรย์ PowerShell ของ Hashtables แล้ว

บทความที่เกี่ยวข้อง