鉴于此输入:
$values = @(1, @(2, 3), $null, @(@(4), 5), 6)
Run Code Online (Sandbox Code Playgroud)
什么是创建一个干净的迭代/管道
1,2,3,4,5,6
Run Code Online (Sandbox Code Playgroud)
?
条件:
$null在输出中.奖金:
[1,2,3,4,5,6]为结果ConvertTo-Json -Compress我在PowerShell中看过Flatten数组,那里的解决方案似乎不符合条件.
@(1, @(2, 3), $null, @(@(4), 5), 6) | %{$_} | ?{$_ -ne $null}
输出:
1
2
3
4
5
6
Run Code Online (Sandbox Code Playgroud)
的ForEach-Object小命令(%)由缺省变平阵列.
为了完整起见,因为它可能会帮助其他用户,我想包含一个非常简单的递归函数,它涵盖了您的大部分标准,除了......
它最好应该是干净且令人难忘的,即首选非拜占庭管道操作,不依赖于自定义函数(如果可能的话)。
我知道[你]自己可以做到这一点,但也许它可以帮助别人。我在谈论 PowerShell 时看到过这一点,称为展开数组。如果您继续搜索,该词可能会带来更多成果。
使用$input它的意图,我们创建了一个相当简单的函数。如果传递的元素之一是数组元素,那么我们再次调用该函数,直到减少为原始值。
function Flatten-Array{
$input | ForEach-Object{
if ($_ -is [array]){$_ | Flatten-Array}else{$_}
} | Where-Object{![string]::IsNullorEmpty($_)}
# | Where-Object{$_} would also work.
}
Run Code Online (Sandbox Code Playgroud)
所以一个示例调用是
@(1, @(2, 3), $null, @(@(4), 5), 6) | Flatten-Array | ConvertTo-Json -Compress
Run Code Online (Sandbox Code Playgroud)
哪个网[1,2,3,4,5,6]。$nulls 包含几个简单Where子句之一。
| 归档时间: |
|
| 查看次数: |
2770 次 |
| 最近记录: |