Как добавить элемент в массив в Powershell? - PullRequest
14 голосов
/ 04 февраля 2010

Код Powershell:

$list += "aa"

добавляет элемент "aa" в список $ list. Есть ли способ добавить элемент? Это мое решение, но должен быть способ сделать это в одной строке.

$tmp = ,"aa";
$tmp += $list
$list = $tmp

Ответы [ 4 ]

22 голосов
/ 04 февраля 2010

В приведенном выше примере вы должны просто сделать:

$list = ,"aa" + $list

Это просто добавит «aa» к списку и сделает его 0-м элементом. Подтвердите, получив $list[0].

13 голосов
/ 04 февраля 2010

Использование += и + для массивов в PowerShell создает копию массива каждый раз, когда вы его используете. Это нормально, если список / массив не очень большой. В этом случае рассмотрите возможность использования общего списка:

C:\> $list = new-object 'System.Collections.Generic.List[string]'
C:\> $list.Add('a')
C:\> $list.Add('b')
C:\> $list.Insert(0,'aa')
C:\> $list
aa
a
b

Обратите внимание, что в этом сценарии вам необходимо использовать методы добавления / вставки. Если вы вернетесь к использованию +=, он скопирует общий список обратно в object[].

2 голосов
/ 22 сентября 2016

Это объединяет два массива в один.

$list = @("aa") + $list

Невозможно выполнить чистое добавление в массив PowerShell, поскольку массивы PowerShell имеют фиксированную длину. Хорошим подходом является объединение двух массивов в один.

0 голосов
/ 16 апреля 2018

Если вам захочется сделать это для массива 'Object', а не 'String', я нашел следующее полезное:

$List = $List | foreach {'aa' + $_}

Очевидно, это было бы относительно медленно для гигантского массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...