美文网首页征服iOS
iOS数组去重项目中用到的总结

iOS数组去重项目中用到的总结

作者: Easy_VO | 来源:发表于2016-01-31 12:00 被阅读2716次

项目中由于某些需求有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型。

1.利用NSDictionary的AllKeys(AllValues)方法

可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的。

示例代码:

NSArray *arr = @[@111,@222,@111];

NSMutableDictionary *dict = [NSMutableDictionary dictionary];

for (NSNumber *number in arr) {

[dict setObject:number forKey:number];

}

NSLog(@"%@",[dict allValues]);

输出结果为:

2013-05-21 12:03:49.449 test1[4377:c07] (

111,

222

)

2.利用NSSet的AllObjects方法

这种方法更快,利用NSSet不会添加重复元素的特性。不过去重的数组没有进行排序,如果需要排序,可以使用NSSortDescriptor类。

示例代码:

NSArray *arr = @[@111,@222,@111];

NSSet *set = [NSSet setWithArray:arr];

NSLog(@"%@",[set allObjects]);

输出结果为:

2013-05-21 12:06:26.508 test1[4547:c07] (

111,

222

)

排序的去重

很多时候可能会遇到需要去除NSArray重复的元素,用了很多方法。

最方便快捷的是NSSet.但是NSSet去重后有时候数组元素的顺序会

打乱。于是换了另外一种方法如下:

NSMutableArray *categoryArray = [[NSMutableArray alloc] init];

for (unsigned i = 0; i < [nameArray count]; i++){

if ([categoryArray containsObject:[nameArray objectAtIndex:i]] == NO){

[categoryArray addObject:[nameArray objectAtIndex:i]];

}

}

顺序就不会乱了。

相关文章

  • iOS数组去重项目中用到的总结

    项目中由于某些需求有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString...

  • reduce数组去重-对象数组

    对于简单数组去重方法非常多,项目需求中多用到对象数组利用reduce数组方法比较简单historyType/dat...

  • iOS-常见类型对象

    一、iOS 数组去重的方法

  • js中给数组中对象去重

    被问到如何给数组中对象去重,想到set答案肯定错误的,这个平时工作中用到的不多,查阅资料,找到给数组中对象去重的方...

  • vue项目-数组处理

    在vue项目实战 显示|隐藏 查询返回数组 过滤数组 数组去重 渲染列表 思路总结:在没有掌握全部技术的前提下怎么...

  • 数组去重 - iOS

    一.删除重复数据 利用valueForKeyPath 的方式 NSArray *arrData = @[@1, @...

  • iOS - 数组去重

    无序的去重 1.利用NSDictionary的AllKeys(AllValues)方法可以将NSArray中的元素...

  • iOS数组去重

    对于开发过程中,数组去除重复的元素,如果数组中的元素是非自定义类型,则直接使用NSSet集合就可以去重。如下 NS...

  • iOS数组去重

    http://blog.csdn.net/zhaopenghhhhhh/article/details/24972645

  • iOS 数组去重

    1.利用keyValue的方式 (@distinctUnionOfObjects.self) NSMutableA...

网友评论

    本文标题:iOS数组去重项目中用到的总结

    本文链接:https://www.haomeiwen.com/subject/zdbqkttx.html