你试过什么?
这是一些直接输入答案的代码,因此尚未经过测试:
您还没有为原始数组命名,因此我们假设它是:
NSArray *originalArray;
我们需要一个可变字典来存储结果:
NSMutableDictionary *points = [NSMutableDictionary new];
现在我们需要处理原始数组中的每个元素,它是一个字典:
for(NSDictionary *item in originalArray)
{
points
获取数组中匹配的当前条目item
。您不为您的条目提供类型,因此我们将使用id
:
id currentUser = [item objectForKey:@"user"];
NSMutableArray *currentValues = [points objectForKey:currentUser];
如果这是currentUser
then currentValues
will be的第一次出现nil
,我们需要为该p1
值创建一个数组并将其添加到points
:
if (currentValues == nil)
[points addObject:[NSMutableArray arrayWithObject:[item objectForKey:@"p1"]
forKey:currentUser
]
]
否则,我们只需将p1
值添加到数组中:
else
[currentValues setObject:[item objectForKey:@"p1"]];
关闭循环并获取密钥:
}
NSArray *keys = [points allKeys];
现在,如果您使用的是 Xcode 4.5,您可以使用现代语法来处理其中的一些:
NSMutableDictionary *points = [NSMutableDictionary new];
for(NSDictionary *item in originalArray)
{
id currentUser = item[@"user"];
NSMutableArray *currentValues = points[currentUser];
if (currentValues == nil)
points[currentUser] = [NSMutableArray arrayWithObject:item[@"p1"];
else
[currentValues addObject:item[@"p1"]];
}
NSArray *keys = [points allKeys];
高温高压