View Single Post
Old 08-08-2008   #2 (permalink)
Alex K. Angelopoulos


 
 

Re: How to create a hash table from an array

function ArrayToHash
{
Param($array, $indexproperty)
$hash = @{}
$array | %{$hash[$_.$indexproperty] = $_}
$hash
}

This should turn any enumerable collection into a hash using the named
property as an index. For example, you can collect filesystem objects from
the current location and use their FullName property as the index like this:

ArrayToHash (gci) FullName

or, to collect them into a variable:

$h = ArrayToHash (gci) FullName



"RickB" <rbielaws@xxxxxx> wrote in message
news:9853d408-c430-410b-a32c-d34ec51a51cc@xxxxxx
Quote:

> I'm looking for the simplest way to turn an array of custom objects
> into a hashtable with some particular property of the custom object
> being the key.
>
> So, given some function that emits an array of objects
>
> function myArray {
> 1..10|
> %{$a=$_;""|
> select-object name,even,sqr|
> %{$_.name = "a$a"
> $_.even = [int]($a/2)*2 -eq $a
> $_.sqr = $a*$a
> $_}}}
>
> What function f will result in
>
> PS 1> $h = f $(myArray) name
> PS 2> $h.a3.even
> False
My System SpecsSystem Spec