根据一个数值寻找数组中最接近这个数值的对象

问题描述:根据地图的层级(mapView.zoomLevel),在数组内寻找到最接近这个层级的数值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
- (NSInteger)getMinValueShowLevel:(NSArray *)showLevels mapZoomLevel:(CGFloat)mapZoomLevel{
NSInteger suitValue = (int)mapZoomLevel
NSInteger diffLevel = 9999
for (NSNumber *showLevel in showLevels) {
NSInteger diffLevelTmp = fabs(mapZoomLevel - [showLevel intValue])
if (diffLevelTmp < diffLevel) {
diffLevel = diffLevelTmp;
suitValue = [showLevel intValue]
}
}
return suitValue
}
注:代码中
showLevels:存有数值对象,如: showLevels = @[@(12), @(7), @(9)]
suitValue:找到的最合适的值
diffLevel:层级差
mapZoomLevel:参照层级,根据这个层级,找到数组中最接近这个数的值