如何从数组中删除重复的值

时间:2011-04-14 10:22:03

标签: iphone objective-c arrays nsmutablearray

您好我有一个包含重复值的NSMUtableArry,例如[1,2,3,1,1,6]。我想删除重复值并希望新数组具有不同的值。请帮助

6 个答案:

答案 0 :(得分:18)

两个班轮

NSMutableArray *uniqueArray = [NSMutableArray array];

[uniqueArray addObjectsFromArray:[[NSSet setWithArray:duplicateArray] allObjects]];

答案 1 :(得分:3)

我的解决方案:

array1=[NSMutableArray arrayWithObjects:@"1",@"2",@"2",@"3",@"3",@"3",@"2",@"5",@"6",@"6",nil];
array2=[[NSMutableArray alloc]init];
for (id obj in array1) 
{
    if (![array2 containsObject:obj]) 
    {
        [array2 addObject: obj];
    }
}
NSLog(@"new array is %@",array2);

输出结果为:1,2,3,5,6 .....希望对您有所帮助。 :)

答案 2 :(得分:2)

我使用此方法在NSArray上创建了一个类别:

- (NSArray *)arrayWithUniqueObjects {
    NSMutableArray *newArray = [NSMutableArray arrayWithCapacity:[self count]];

    for (id item in self)
        if (NO == [newArray containsObject:item])
            [newArray addObject:item];

    return [NSArray arrayWithArray:newArray];
}

然而,这是蛮力而且效率不高,可能是更好的方法。

答案 3 :(得分:0)

如果值的顺序不重要,最简单的方法是从数组中创建一个集合:

NSSet *set = [NSSet setWithArray:myArray];

它只包含唯一的对象:

  

如果同一个对象在数组中出现多次,则只会在返回的集合中添加一次。

答案 4 :(得分:0)

如果您对订单感到担心,请查看此解决方案

// iOS 5.0 and later
NSArray * newArray = [[NSOrderedSet orderedSetWithArray:oldArray] array];

答案 5 :(得分:0)

如果你不担心对象的顺序,那么NSSet方法是最好的

 uniquearray = [[NSSet setWithArray:yourarray] allObjects];