2

我有一个要过滤的锯齿状数组 $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 中的数组中分组。

解决这个问题的最优雅的方法是什么?

4

1 回答 1

3

这能为你解决吗?我删除[0]了,因为我没有看到它的用途。我还确保使用 ) 在外部数组中传递多个结果,

$h = ((‘a’,’b’,’a’), (‘c’,’d’), (‘a’, ‘f’)) 
$h | foreach { ,($_ | Where-Object {$_ -Like 'a'}) } | foreach { if ($_.Count -gt 0) {<% DO SOMETHING %> }}
于 2013-05-09T09:46:57.180 回答