Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding element at specified index location in an array. Powershell

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.
}
like image 837
Azely Avatar asked Sep 02 '26 20:09

Azely


2 Answers

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.

like image 88
Vadim KOT Avatar answered Sep 05 '26 12:09

Vadim KOT


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
like image 38
デイビド チイズ マチュズ Avatar answered Sep 05 '26 11:09

デイビド チイズ マチュズ



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!