PowerShell – hashtable and custom object array about iteration

I often write lists of things and enumerate them to perform some get / set

I hate enumerating hash tables because whenever I have to, I have to bend back to use hash table objects

$hashtablelistofitems = @{}

$hashtablelistofitems.add("i'm a key","i'm a value")

foreach ($item in $hashtablelistofitems.keys) {
  $item
  $hashtablelistofitems.item($item)
}

Instead, I usually revert to a one - dimensional array of custom objects with two noteproperties

$array = @()

$listofitems = "" | select key,value

$listofitems.key = "i'm a key"
$listofitems.value = "i'm a value"

$array += $listofitems

foreach ($item in $listofitems) {
  $item.key
  $item.value
}

Why should I use a hash table on this method? Just because it only guarantees a single value for each key?

Solution

If you want to store a list of key values without creating an array containing a custom object with two properties (key / value), you should use a hash table for two main reasons:

>You may want to pass the hash table to the function that expects the hash table. > Hashtable is a built - in PowerShell type known to all users Your second method is more difficult for other users to read / maintain

Note: you can iterate the hash table by calling the getenumerator() function, which is almost the same as your method:

foreach ($item in $listofitems.GetEnumerator()) {
  $item.key
  $item.value
}

In addition, the hash table comes with convenient methods you may want to use:

@{} | Get-Member | Where-Object MemberType -eq Method | Select Name

Output:

Name             
----             
Add              
Clear            
Clone            
Contains         
ContainsKey      
ContainsValue    
CopyTo           
Equals           
GetEnumerator    
GetHashCode      
GetObjectData    
GetType          
OnDeserialization
Remove           
ToString
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>