0

我正在遍历一个数组,但我只想要满足我条件的前 10 个结果。但我不知道从哪里开始。我for ($i=0;$i -le 10;$i++)想当 IF 语句为真时,我需要一个类似于 $i-- 的 for 循环。我是个菜鸟 :D

$result | ForEach-Object {
    if (($_.City -contains 'Oklahoma') -or ($_.City -like 'Chicago')){
    }else {
    $dosomething
   }
}
4

3 回答 3

1

我想出了一种方法。还有其他/更好的方法吗?

$i=0;
$result | ForEach-Object {
     if (($_.City -contains 'Oklahoma') -or ($_.City -like 'Chicago') -or (($i -ge 10)){}
     else {
           $dosomething
           $i++;
     }
}
于 2020-05-20T08:30:05.110 回答
0

通常的方法是为结果保留一个计数器。当找到所需数量的结果时,break语句将终止循环。像这样,

$hits = 0
$maxresults = 10
$result | ForEach-Object {
  if ($_ -match "whatever" ){
   ++$hits
   do-stuff
  } else {
    do-something-else
  }
  if($hits -ge $maxresults) { break }
}
于 2020-05-20T08:36:53.147 回答
0

如果您正在寻找单线,那么这可能会有所帮助:

$top10 = $result | Where-Object {($_.City -contains 'Oklahoma') -or ($_.City -like 'Chicago')} | Select-Object -First 10 -Skip 0

于 2020-05-20T09:04:31.687 回答