我有一个希望过滤的锯齿状数组$ h。一种方法是在管道中使用管道,如下例所示:
$h = ((‘a’,’b’,’a’), (‘c’,’d’), (‘a’, ‘f’))
$h | foreach {$_ | Where-Object {$_ -Like 'a'} } | foreach { if ($_.Count -gt 0) {<% DO SOMETHING %> }}
正如您所看到的,我正在尝试在foreach {}语句中启动一个新的管道,希望它不会干扰外部管道,但确实如此。输出不再是锯齿状数组,而只是一个由字符串组成的一维数组:(‘a’,’a’,’a’)
我想看到的是((‘a’,’a’),’a’)
。
实际上,'a','b'等是具有属性的自定义对象,以锯齿状数组$ h的数组分组。
解决此问题最优雅的方法是什么?
答案 0 :(得分:3)
这能为你解决吗?我删除了[0]
,因为我没有看到它的用途。我还确保使用,
)在外部数组中提供多个结果:
$h = ((‘a’,’b’,’a’), (‘c’,’d’), (‘a’, ‘f’))
$h | foreach { ,($_ | Where-Object {$_ -Like 'a'}) } | foreach { if ($_.Count -gt 0) {<% DO SOMETHING %> }}