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

什么';在PowerShell中迭代数组并修改元素的最佳方法是什么?,powershell,iteration,Powershell,Iteration,我知道Ruby有一张地图执行此操作的方法。在PowerShell中,我目前所做的是: $new_array = @(); $array | % { $new_array += <do something with the currently element $)>; } $array = $new_array; $new_array=@(); $array |%{ $new_数组+=; } $array=$new_数组; 我想知道最好的方法。谢谢 我能想到的最简单的是 $

我知道Ruby有一张
地图执行此操作的方法。在PowerShell中,我目前所做的是:

$new_array = @();
$array | % {
    $new_array += <do something with the currently element $)>;
}
$array = $new_array;
$new_array=@();
$array |%{
$new_数组+=;
}
$array=$new_数组;

我想知道最好的方法。谢谢

我能想到的最简单的是

$array | %{ $_ + 1 }
$\u1
是我想要的转换

因此,您可以:

$new = $array | %{$_ + 1}


附言: 如果需要,可以定义映射函数:

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

    $a | %{ & $script $_ }

}

map {param($i) $i + 1} 1,2,3

或者在System.Array上编写一个扩展方法:

我能想到的最简单的方法是

$array | %{ $_ + 1 }
$\u1
是我想要的转换

因此,您可以:

$new = $array | %{$_ + 1}


附言: 如果需要,可以定义映射函数:

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

    $a | %{ & $script $_ }

}

map {param($i) $i + 1} 1,2,3

或者在系统上编写扩展方法。数组:

您还可以使用筛选器:

$arr = 1,2,3

 filter addone {$_ +1}
 $arr | addone
或过滤功能:

function addone {process{$_ +1}}
$arr | addone
或匿名筛选器:

$addone = {$_ +1}
$addone.isfilter = $true
$arr | &$addone

编辑:匿名筛选器工作的天数可能已编号。在V3测试版中,这已经不起作用了,我怀疑这不会改变。脚本块一经创建就被编译,编译后无法更改.isfilter属性。

您还可以使用筛选器:

$arr = 1,2,3

 filter addone {$_ +1}
 $arr | addone
或过滤功能:

function addone {process{$_ +1}}
$arr | addone
或匿名筛选器:

$addone = {$_ +1}
$addone.isfilter = $true
$arr | &$addone

编辑:匿名筛选器工作的天数可能已编号。在V3测试版中,这已经不起作用了,我怀疑这不会改变。似乎脚本块一经创建就被编译,并且.isfilter属性在编译后不能更改。

还有
$anonymousFunc={$\u*3}
1,2,3 |%$anonymousFunc
以及
$anonymousFunc={$\u*3}
1,2,3 |%$anonymousFunc