刚学习PowerShell,这是一个问题: 我需要一个最大阵列成员的订单号。 与阵列1,2,5,3,4一样,最大的是成员3。 谢谢!
答案 0 :(得分:2)
您可以使用单个功能或一步一步完成,让我们先看一步一步的版本。
给定整数数组$a
,首先需要找到最大值:
$maximum = ($a | Measure -Max).Maximum
请注意,Measure-Object
会返回Double
,因此稍后需要将其转换为Int32
。现在,您需要搜索该值的第一个出现位置:
$index = [Array]::IndexOf($a, [int]$maximum)
请注意,如果您希望最后一个元素的索引具有最大值,则可以将IndexOf
替换为LastIndexOf
(例如,给定一个数组(1,3,3,2,3)
并使用IndexOf
,您可以&#39 ;得到1
和LastIndexOf
你得到4
,不要忘记数组是基于0的。)
您可以将所有内容放在一行(如果您愿意):
$index = [Array]::IndexOf($a, [int](($a | Measure -Max).Maximum))
您也可以使用LINQ:
$index = [Array]::IndexOf($a, [System.Linq.Enumerable]::Max([int[]]$a)
让我们为此做一个函数(让我成为一个长子):
function IndexOfMaximum($a)
{
$maximum = $null
$indexOfMaximum = -1
for ($i = 0; $i -lt $a.Length; ++$i)
{
if ($maximum -eq $null -or $a[$i] -gt $maximum)
{
$maximum = $a[$i]
$indexOfMaximum = $i
}
}
return $indexOfMaximum
}
用作:
IndexOfMaximum($a)
<子> 注意:问题应该显示尝试解决问题,我发布了这个答案(作为社区Wiki),因为我认为PowerShell示例永远不够...... 子>