我有一个数组,如
(一,二,一,二,三,一,三,二)
我想删除重复项,并仅保留最后一次出现的项目。我的结果数组应该是:
(一,三,二)
我通过[NSOrderedSet orderedSetWithArray:array]
删除了重复项,但这样可以保留第一次出现的项目。它给出的结果是(一,二,三),即第一指数,第二指数和第五指数。
如何才能保留最后一次出现,所以我的结果应该是第6个索引,第7个索引和第8个索引?
谢谢!
答案 0 :(得分:2)
感谢正确的方向@Avi和@Cristik(问题的评论者),实施了以下解决方案及其工作:
NSMutableArray *array = [NSMutableArray arrayWithCapacity:[originalArray count]];
NSEnumerator *enumerator = [originalArray reverseObjectEnumerator];
for (id element in enumerator)
{
[array addObject:element];
}
NSOrderedSet *orderedSet = [NSOrderedSet orderedSetWithArray:array];
/* orderedSet now has has the desired result */
答案 1 :(得分:0)
@implementation NSArray (Extended)
- (NSArray *)arrayByRemovingDuplicatesMaintainingOrder
{
NSMutableSet *arrayObjects = [NSMutableSet set];
NSMutableArray *result = [NSMutableArray array];
for (id obj in self)
{
if (![arrayObjects containsObject:obj])
{
[result addObject:obj];
[arrayObjects addObject:obj];
}
}
return result;
}
@end