【发布时间】:2019-06-20 09:24:33
【问题描述】:
我正在寻找一组号码中的下一个可用号码,但遇到了麻烦。
我的数据集是一个字符串数组,然后将其转换为整数数组。原始数据集可能有重复的数字。
当我尝试查找下一个可用号码时,重复的号码似乎会导致产生不良结果的问题
$dataset = "0001","0002","0004","0006","2","5"
#Convert our strings to integers
[array]$Used = foreach($number in $dataset) {
try {
[int]::parse($number)
} catch {
Invoke-Expression -Command $number;
}
}
[array]::sort($Used)
$range = 1..10
$Available = compare $range $Used -PassThru
我的结果是:
$Dataset =
0001
0002
0004
0006
2
5
$Used =
1
2
2
4
5
6
注意到$Used(已排序)显示2 是重复的:
$Available =
2
3
7
8
9
10
最后$Available 将2 列为一个错误的可用号码。 2实际上用了两次,正确答案应该是3。
有什么想法吗?
【问题讨论】:
-
$Available = compare $range $used -PassThru | where SideIndicator -eq '<=' -
或
$Available = Compare-object $range ($used|Sort-Object -Unique) -PassThru
标签: powershell