美文网首页
iOS数组遍历时删除不符合条件元素

iOS数组遍历时删除不符合条件元素

作者: 沙漠绿洲1111 | 来源:发表于2018-12-06 11:42 被阅读0次

方法一:enumerateObjectsUsingBlock

例子:

[mutableArr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

    if (obj不符合某条件) {

       [mutableArr removeObject:obj];

    }

}];

存在的问题:这种方式,删除一个元素时,正常。删除多个元素时,是异常的。(会出现索引跳位)

方法二:forin

例子:

for(int i=0; i < [array count]; i++){

        if(YES){

            [array removeObjectAtIndex:i];

            i--;

        }

}

存在的问题:这种方式,会出现crash。

方式三:while循环

例子:

while(array.count>0)

{  

    obj = [array objectAtIndex:0];

    //判断处理

   …

   //remove

[array removeObjectAtIndex:0]; 

}

存在的问题:while循环判断条件不好把控。


最好还是把需要删除的内容,筛选出来放到一个array中,然后再把这些需要删除的统一从原始数组中删除。如下面这个网页提供的做法:

NSMutableArray *discardedItems = [NSMutableArray array];

SomeObjectClass *item;

for (item in originalArrayOfItems) {

    if ([item shouldBeDiscarded])

        [discardedItems addObject:item];

}

[originalArrayOfItems removeObjectsInArray:discardedItems];

相关文章

  • iOS数组遍历时删除不符合条件元素

    方法一:enumerateObjectsUsingBlock 例子: [mutableArr enumerateO...

  • array_filter函数

    用回调函数过滤数组中的元素,把符合条件的数组保留(key值不变),不符合条件的数组舍弃

  • js 数组遍历时删除元素

    参考js在循环遍历数组中删除指定元素踩坑( foreach.. for.. for..in.. )[https:/...

  • 数组元素删除

    关键词:Array数组删除多个元素、JS、倒序删除 背景? 删除数组中特定条件的元素(可能存在多个)_JS实现。实...

  • TypeScript数组操作

    声明 查找数组中某个元素 查找满足条件的所有元素(过滤) 删除某个元素 把多个数组拼接成一个新数组

  • iOS 常用的数据处理

    1. iOS遍历数组的同时删除元素 NSMutableArray*array = [NSMutableArraya...

  • swift 删除排序数组中的重复项

    条件:给你一个无序数组 nums ,请你 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不...

  • 关于iOS for ... in 注意的地方

    经常我们会筛选一个可变数组里面的元素讲不符合条件的删除掉一般我们的做法: 这样程序就会抛出个异常如下 程序闪退~~...

  • JavaScript中数组和字符串的常用操作

    数组 添加元素push()在数组末尾添加元素unshift()在数组首位置添加元素 删除元素pop()删除数组末尾...

  • php foreach遍历时不能unset

    在php7.0 Ubuntu16.04环境中,在对foreach遍历时不能对正在遍历的数组进行删除元素,修改元素,...

网友评论

      本文标题:iOS数组遍历时删除不符合条件元素

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