刘宏立博客

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

问题描述:根据地图的层级(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:参照层级,根据这个层级,找到数组中最接近这个数的值