我有一个阵列数组,这些数组的大小完全不同,但所有整数都是如此。我需要做的是找到每个值的最高值,以便稍后与之比较。不是太难,但是当我把它写出来时,乍一看代码几乎看不到。特别是这一行:
$logScaleList[$i][$logScaleList[$i].Length-1]
由于这个钝,或者只是在处理2d数组时,你会有丑陋的嵌套语句吗?
完整代码:
$logScaleList = [System.Collections.ArrayList]@()
[void]$logScaleList.Add(@(100,126,158,200,251,316,398,501,631,794,1000,1259,1585,1995,2512,3162,3981,5012,5230))
[void]$logScaleList.Add(@(100,126,158,200,251,316,398,501,631,794,1000,1259,1585,1995,2512,3162,3981,5012,5850))
[void]$logScaleList.Add(@(1000,1259,1585,1995,2512,3162,3981,3162,5012,6310,7390))
[void]$logScaleList.Add(@(1,2,3,4,5,6,8,10,13,16,20,25,32,40,50,63,79,100,126,158,200,251,316,398,501,631,794,1000,1259,1585,1995,2512,3162,3981,5012))
[void]$logScaleList.Add(@(1,2,3,4,5,6,8,10,13,16,20,25,40,50,63,79,100,126,158,200,251,316,398,501,631,794,1000,1259,1585,1995,2512))
for ($i = 0; $i -lt $logScaleList.count; $i++)
{
write-host "Top value is" $logScaleList[$i][$logScaleList[$i].Length-1]
}
答案 0 :(得分:0)
您可以使用ForEach-Object
或foreach
循环来避开第一个索引运算符:
foreach($List in $LogScaleList){
$List[$List.Length - 1]
}
您可以按索引-1
引用最后一项,同时避开Length
属性(如果这看起来不那么难看):
foreach($List in $LogScaleList){
$List[-1]
}
答案 1 :(得分:0)
您可以使用sort cmdlet对数组进行排序,然后选择第一项:
$logScaleList | % { $_ | sort -Descending | select -first 1 }
输出:
5230
5850
7390
5012
2512