我有一个NSDictionary
我希望将相应的密钥返回到最接近的零(包括那些带有负数的密钥):
NSDictionary *dict = @{
@"David" : @-89,
@"Bobby" : @61,
@"Nancy" : @-8,
@"Sarah" : @360,
@"Steve" : @203
};
所以在这种情况下Nancy
最接近......
我怎样才能做到这一点?我搜索了但是空了。
答案 0 :(得分:2)
这是一个简单的最大问题,
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
答案 1 :(得分:1)
简单地迭代值并跟踪哪一个最接近零。使用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);