как удалить повторяющиеся значения из массива - PullRequest
7 голосов
/ 14 апреля 2011

Здравствуйте, у меня есть один NSMUtableArry, который содержит значение дубликатов, например, [1,2,3,1,1,6]. Я хочу удалить значение дубликатов и хочу новый массив с различными значениями. Пожалуйста, помогите

Ответы [ 6 ]

18 голосов
/ 11 августа 2011

два лайнера

NSMutableArray *uniqueArray = [NSMutableArray array];

[uniqueArray addObjectsFromArray:[[NSSet setWithArray:duplicateArray] allObjects]];
3 голосов
/ 24 ноября 2011

Мое решение:

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 голосов
/ 14 апреля 2011

Я создал категорию для 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];
}

Однако, это грубая сила и не очень эффективная, возможно, есть лучший подход.

0 голосов
/ 22 декабря 2014

Подход NSSet является лучшим, если вы не беспокоитесь о порядке объектов

 uniquearray = [[NSSet setWithArray:yourarray] allObjects];
0 голосов
/ 23 августа 2013

Если вы беспокоитесь о заказе, проверьте это решение

// iOS 5.0 and later
NSArray * newArray = [[NSOrderedSet orderedSetWithArray:oldArray] array];
0 голосов
/ 14 апреля 2011

Если порядок значений не важен, самый простой способ - создать набор из массива:

NSSet *set = [NSSet setWithArray:myArray];

Он будет содержать только уникальные объекты:

Если один и тот же объект появляется в массиве более одного раза, он добавляется только один раз в возвращаемый набор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...