我有一个要过滤的锯齿状数组 $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 中的数组中分组。
解决这个问题的最优雅的方法是什么?