【问题标题】:How to remove duplicate values from array如何从数组中删除重复值
【发布时间】:2011-08-05 10:19:38
【问题描述】:

我有一个包含重复值的 NSMutableArray,例如 [1,2,3,1,1,6]。我想删除重复值并想要具有不同值的新数组。

【问题讨论】:

标签: arrays objective-c nsmutablearray


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      两个班轮

      NSMutableArray *uniqueArray = [NSMutableArray array];
      
      [uniqueArray addObjectsFromArray:[[NSSet setWithArray:duplicateArray] allObjects]];
      

      【讨论】:

      • 如果您想要原始订单,请使用NSOrderedSet
      【解决方案4】:

      我的解决方案:

      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..... 希望对您有所帮助。 :)

      【讨论】:

      • 嗨,你能告诉我,我可以计算 array1 中重复元素的数量吗,比如 2 将在三次出现。
      【解决方案5】:

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

      NSSet *set = [NSSet setWithArray:myArray];
      

      它只会包含唯一的对象:

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

      【讨论】:

        【解决方案6】:

        我用这个方法在 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];
        }
        

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

        【讨论】:

          猜你喜欢
          • 2015-09-24
          • 2018-02-13
          • 2011-09-02
          • 2014-10-10
          • 2019-10-19
          • 2018-01-18
          • 1970-01-01
          • 2021-07-29
          相关资源
          最近更新 更多