问:我正在寻找一种更优雅的方法从数组中获取最接近数字的匹配项。
我的处理可能有些复杂。
输入
## A given array A where to search in
$a = (16/10),(16/9),(4/3),(5/4),(21/10),(21/9)
## A given value B which should be searched for in array A (closest match)
$b = 16/11
期望的输出
"Closest value to 16/11 is 4/3"
我目前用来解决问题的代码
## New array C for the differences of array A - B
$c = $a | %{ [math]::abs($_ - $b) }
## Measure array C to get lowest value D
$d = $c | measure -Minimum
## Get position E of value D in array C
$e = [array]::IndexOf($c, $d.minimum)
## Position E correlates to array A
echo "Closest value to $b is $($a[$e])
备注
- 如果哈希表或其他结构更加适合,那么它不一定要是一个数组
- 我的当前代码输出小数,例如
1.33333
,而不是分数4/3
。最好能够输出分数。 - 短代码总是更好的。