Return 最接近 0 的值,包括负数

Return value closest to 0 including negative numbers

我有一个 NSDictionary,我想 return 对应的最接近零的键(包括负数的键):

NSDictionary *dict = @{
                       @"David" : @-89,
                       @"Bobby" : @61,
                       @"Nancy" : @-8,
                       @"Sarah" : @360,
                       @"Steve" : @203
                      };

所以在这种情况下 Nancy 最接近... 我怎样才能做到这一点?我搜索了一下,但一无所获。

只需迭代这些值并跟踪哪个值最接近零。使用 abs 处理绝对值。

免责声明 - 以下代码未经测试 - 可能是拼写错误。它还假定整数。根据需要进行调整以支持浮点值。

NSDictionary *dict = ... // your dictionary
NSInteger closestValue = NSIntegerMax;
NSString *closestKey = nil;
for (NSString *key in [dict allKeys]) {
    NSNumber *value = dict[key];
    NSInteger number = (NSInteger)labs((long)[value integerValue]);
    if (number < closestValue) {
        closestValue = number;
        closestKey = key;
    }
}

NSLog(@"Closest key = %@", closestKey);

这是一个简单的最大最小问题,

NSString *curMinKey = [dict.allKeys firstObject];
NSInteger curMinVal = ABS([[dict objectForKey:curMinKey] integerValue]);
for(id key in dict) {
    if(curMinVal > ABS([[dict objectForKey:key] integerValue])) {
        curMinKey = key;
        curMinVal = ABS([[dict objectForKey:key] integerValue]);
    }
}
/// curMinKey is what you are looking for