迭代数组并修改PowerShell中的元素的最佳方法是什么?

Jus*_*ner 0 iteration powershell

我知道Ruby有一个map!方法可以做到这一点.在PowerShell中,我目前所做的是:

$new_array = @();
$array | % {
    $new_array += <do something with the currently element $)>;
}
$array = $new_array;
Run Code Online (Sandbox Code Playgroud)

我想知道最好的方法.谢谢!

man*_*lds 6

最简单的我能想到的是

$array | %{ $_ + 1 }
Run Code Online (Sandbox Code Playgroud)

$_ + 1 是我想要的转变.

所以你可以这样做:

$new = $array | %{$_ + 1}
Run Code Online (Sandbox Code Playgroud)

要么

$array = $array | %{ $_ + 1} 
Run Code Online (Sandbox Code Playgroud)

PS:您可以根据需要定义地图功能:

function map ([scriptblock]$script, [array] $a) {

    $a | %{ & $script $_ }

}

map {param($i) $i + 1} 1,2,3
Run Code Online (Sandbox Code Playgroud)

或者在System.Array上编写扩展方法:http://blogs.msdn.com/b/powershell/archive/2008/09/06/hate-add-member-powershell-s-adaptive-type-system.aspx