zoukankan      html  css  js  c++  java
  • iOS NSArray数组过滤

    需求:在一个数组里面,将在这个数组中的并且在另一个数组里面的元素过滤掉。

    即:在一个数组dataArray里面,将在dataArray数组中的并且在filteredArray数组里面的元素过滤掉。

            //iOS-筛选数组内的元素
            //在dataArray中里面,将在dataArray中的并且在filteredArray数组里面的元素过滤掉
            //需要去掉的元素数组
            NSMutableArray *filteredArray = [[NSMutableArray alloc]initWithObjects:@"1",@"3",@"9", nil];
            //需要被筛选的数组
            NSMutableArray *dataArray = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"1",@"1",@"3",@"1",@"5",@"7", nil];
            
            
            /*
             方法一:利用NSPredicate
             注:NSPredicate所属Cocoa框架,在密码、用户名等正则判断中经常用到。
             类似于SQL语句
             NOT 不是
             SELF 代表字符串本身
             IN 范围运算符
             那么NOT (SELF IN %@) 意思就是:不是这里所指定的字符串的值
             */
            
            NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)",filteredArray];
            //过滤数组
            NSArray * reslutFilteredArray = [dataArray filteredArrayUsingPredicate:filterPredicate];
            NSLog(@"Reslut Filtered Array = %@",reslutFilteredArray);
            
            
            /*
             方法二:从后往前遍历数组,然后匹配删除
             */
            int i = (int)[dataArray count]-1;
            for(;i >= 0;i --){
                //containsObject 判断元素是否存在于数组中(根据两者的内存地址判断,相同:YES  不同:NO)
                if([filteredArray containsObject:[dataArray objectAtIndex:i]]) {
                    [dataArray removeObjectAtIndex:i];
                }
            }
            NSLog(@"Data Array = %@",dataArray);
  • 相关阅读:
    应用机器学习建议
    梯度下降法解神经网络
    梯度下降法解逻辑斯蒂回归
    线性代数学习笔记(十四)
    线性代数学习笔记(十三)
    线性代数学习笔记(十二)
    线性代数学习笔记(十一)
    线性代数学习笔记(十)
    线性代数学习笔记(九)
    重新编译Unity Mono遇到的坑,大坑,巨坑!!!
  • 原文地址:https://www.cnblogs.com/jukaiit/p/5192663.html
Copyright © 2011-2022 走看看