View Single Post
Old 08-08-2008   #3 (permalink)
RickB


 
 

Re: How to create a hash table from an array

On Aug 8, 3:44*pm, "Alex K. Angelopoulos" <aka(at)mvps.org> wrote:
Quote:

> *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" <rbiel...@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.
>
Quote:

> > So, given some function that emits an array of objects
>
Quote:

> > function myArray {
> > 1..10|
> > *%{$a=$_;""|
> > *select-object name,even,sqr|
> > *%{$_.name = "a$a"
> > * *$_.even = [int]($a/2)*2 -eq $a
> > * *$_.sqr = $a*$a
> > * *$_}}}
>
Quote:

> > What function f will result in
>
Quote:

> > PS 1> $h = f $(myArray) name
> > PS 2> $h.a3.even
> > False- Hide quoted text -
>
> - Show quoted text -
Wonderfull
That was so much help
Thanks!
My System SpecsSystem Spec