从数组中删除重复项并保留最后一次出现 - iOS
Remove duplicate items from array and keep last occurrences - iOS
我有一个数组,如
(一、二、一、二、三、一、三、二)
我想删除重复项,只保留最后一次出现的项目。我的结果数组应该是:
(一、三、二)
我通过 [NSOrderedSet orderedSetWithArray:array]
实现了删除重复项,但这会保留首次出现的项目。它给出的结果是(一,二,三)即第一个索引,第二个索引和第五个索引。
我怎样才能只保留最后一次出现的结果,所以我的结果应该是第 6 个索引、第 7 个索引和第 8 个索引?
谢谢!
@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
感谢@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 */
我有一个数组,如
(一、二、一、二、三、一、三、二)
我想删除重复项,只保留最后一次出现的项目。我的结果数组应该是:
(一、三、二)
我通过 [NSOrderedSet orderedSetWithArray:array]
实现了删除重复项,但这会保留首次出现的项目。它给出的结果是(一,二,三)即第一个索引,第二个索引和第五个索引。
我怎样才能只保留最后一次出现的结果,所以我的结果应该是第 6 个索引、第 7 个索引和第 8 个索引?
谢谢!
@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
感谢@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 */