你嘗試過什麼?
下面是一些代碼輸入直接到答案,因此它並沒有進行測試:
你還沒爲你的原始陣列的名稱,讓我們假定它是:
NSArray *originalArray;
我們需要一個可變字典存儲結果:
NSMutableDictionary *points = [NSMutableDictionary new];
現在我們需要將原來的數組中的每個元素的過程,它是二ctionary:
for(NSDictionary *item in originalArray)
{
獲取points
陣列匹配item
當前條目。你不給類型條目,所以我們將使用id
:
id currentUser = [item objectForKey:@"user"];
NSMutableArray *currentValues = [points objectForKey:currentUser];
如果這是currentUser
第一次出現那麼currentValues
會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];
HTH
來源
2012-12-08 17:42:59
CRD
謝謝這麼多。我沒有太多時間,所以只嘗試了Martin的解決方案,它對我很有幫助。 –