Scripting Tips and Tricks: 'Jagged' Arrays

A jagged array is an array of arrays! Eh? Come again?

Well, in a jagged array, at least one 'compartment' or element contains a child array. Here’s what a simple jagged array (called $Array) might look like when sketched out:

1

2, 3

3

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

4

5, 5, 5

6

“Hello”, “World”

7

8

9

10

 

As you can see - it's rather spiky or jagged.

So... $Array[0] returns:

1

 

$Array[-1] returns:

10

 

$Array[7] returns:

Hello

World

 

$Array[7][-1] returns:

World

(...as ‘World’ is an element from a child array).

 

Here’s an example that creates a jagged array:

$ChildArrayElemenet1 = "Hello", "World", @{test="la"; brains = "blah"; cheese = "1,23,4,5,6,7"}

$ChildArrayElemenet2 = 1

$ChildArrayElemenet3 = 1,2,3

$ChildArrayElemenet4 = “Single”

$Array = $ChildArrayElemenet1, $ChildArrayElemenet2, $ChildArrayElemenet3, $ChildArrayElemenet4

  

Access the first element:

 

Access the hash table that’s the last element of the first child array:

 

 

Access the ‘test’ label in the hash table:

 

Let’s create a jagged PS Custom Object…

$Nic = gwmi -Class Win32_NetworkAdapter –property *

$Name = "Ian's Stuff"

$Stuff = [PSCustomObject]@{

Win32Nic = $Nic

Name = $Name

} #End of $Stuff

 

The Name property is a single string. The Win32Nic property is a child array.

 Now, access an element in the child array from the PS Custom Object…

 

Or…

 

 

Now, access some properties from an element in the child array…

 

HTH!