I'm new to Powershell and trying to get a few functions together. I've created a function that creates an array from input. I'm also trying to create a function that add elements at a specified index without using lists (I know that lists are so much easier, but I'm trying to understand how to do it without lists).
This is my code so far. I just can't get this to work, I've tried with loops and the code below, any help is appreciated.
Kind Regards!
Function Create_array ($index, $value)
{
$array = new-object array[] $index
if ($value)
{
for ($i = 0;$i -lt $array.length;$i++)
{
$array[$i] = $value
}
write-host ""
write-host "Grattis!! Din array är nu skapad med angivet index och värde."
}
else
{
for ($i = 0;$i -lt $array.length;$i++)
{
$array[$i] = "Hej $env:username och välkommen till Dennis och Jonas script. Detta är en defaulttext, ange ett eget index följt av önskat värde"
}
write-host ""
write-host "Array är nu skapad med defaultvärden"
}
return $array
}
Function Add_to_array ($nyarray, $value, $index) # Lägger till ett värde på angivet index eller längst ner om index ej anges.
{
if ($index -gt $nyarray.length)
{
$i = $nyarray.length
write-host "Du har angivit ett felaktigt index. Din array innehåller $i element"
}
elseif ($index -gt 2) # Kollar om det angivna indexet är större än 2
{
$nyarray[$index - 2] += $värde # Om större än 2: Angivna värdet läggs in på angivet index ($index - 2)
write-host "Element är nu inlagt på angivet index i din array"
} # och resten flyttas ner.
elseif ($index -eq 1) # Kollar om angivet index är mindre än 2
{
$nyarray[0] += $värde # Om mindre sätts det angivna värdet in på index 1 (0)
write-host "Element är nu inlagt på angivet index i din array"
}
else
{
$nyarray += $värde # Om inget index anges sätter denna funktion in det angivna värdet längst ner.
write-host "Element är nu inlagt längst ner i din array"
}
return $nyarray # Lägger in den "nya" arrayen i det variabelnamn man valt.
}
If we need flat array in result, we can use sum operator:
Code bellow is adding [string]'Word' at position 4 of $array1
$new_array = @($array1[0..3]) + @('Word') + @($array1[4..5])
use-case is concatenate two flat arrays together, or add some data at some position of fixed array.
This is how i managed it. Wrapped into a function. Although you may have issues. if your array values are very long.
$myArray = @("how","to","slice","into","an","array")
Function Insert-ToArray($Array, $insertAfter, $valueToInsert){
#find the index of value before insertion
$insertPoint = $Array.IndexOf($insertAfter)
#split the array into two parts
$firstHalf = $Array[0..$insertPoint]
$secondHalf = $Array[($insertPoint +1)..$Array.Length]
#slice into a new array
$newArray = @($firstHalf,$valueToInsert,$secondHalf)
return $newArray
#returning this new array means you can assign it over the old array
}
$myArray = Insert-ToArray -Array $myArray -insertAfter "slice" -valueToInsert "something"
$myArray
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With