NSArray数组的常用操作(遍历、排序、倒序、比较、与字符串的比较)

数组的循环
1、简单的for循环

NSArray *array01 = [[NSArray alloc] initWithObjects:@“woman”, @"man", nil];
NSInteger countItem = array01.count;
for (int i = 0; i < countItem; i++)
{
    NSObject *object = [array01 objectAtIndex:i];
    NSLog(@"object %@", object);
}

2、快速遍历-最快的方法

for (NSObject *object in array01)
{
    NSLog(@"object %@", object);
}

3、逐个遍历
3-1、正序遍历

[array01 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    NSLog(@"顺序遍历array:%zi-->%@", idx, obj);
}];

3-2、倒序遍历(NSEnumerationReverse)

[array01 enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    NSLog(@"倒序遍历array:%zi-->%@",idx,obj);
}];

4、枚举

NSEnumerator *objectEnumerator = [array01 objectEnumerator];
id obj;
while (obj = [objectEnumerator nextObject])
{
    NSLog(@"枚举array:%@", obj);
}

数组与字符串的转换

注意:相互转换时,数组中包含的所有元素必须是字符串对象

NSArray *array05 = [NSArray arrayWithObjects:@“zhangshaoyu”, @"meizhou", @"worker", @"man", nil];
NSLog(@"array05 %@", array05);

NSString *stringArray = [array05 componentsJoinedByString:@" +*-*#+ "];
NSLog(@"stringArray %@", stringArray);

// 字符串分离成数组时,必须以字符串中包含的相同的字符作为分割符号
NSArray *array06 = [stringArray componentsSeparatedByString:@" +*-*#+ "];
NSLog(@"array06 %@", array06);

数组比较
1、两个数组比较:比较两个数组是否相等,即数组的元素个数相等,数组的元素个个都相等

NSArray *array02 = [[NSArray alloc] initWithObjects:@“woman”, @"man", @"man", nil];
BOOL isEqual = [array01 isEqualToArray:array02];
if (isEqual)
{
    NSLog(@"%@ 等于 %@", array01, array02);
}
else
{
    NSLog(@"%@ 不等于 %@", array01, array02);
}

NSArray *array03 = [[NSArray alloc] initWithArray:array01];
isEqual = [array01 isEqualToArray:array03];
if (isEqual)
{
    NSLog(@"%@ 等于 %@", array01, array03);
}
else
{
    NSLog(@"%@ 不等于 %@", array01, array03);
}

2、单个数组-数组排序:比较元素的大小(数组中的元素类型必须一致,才能进行比较大小)
2-1、NSComparator

NSArray *array07 = @[[NSNumber numberWithInt:10], [NSNumber numberWithInt:3], [NSNumber numberWithInt:5], [NSNumber numberWithInt:7], [NSNumber numberWithInt:8], [NSNumber numberWithInt:9], [NSNumber numberWithInt:19]];
NSArray *sortedArray = [array07 sortedArrayUsingComparator:^(NSNumber *number1, NSNumber *number2) {

        int value1 = [number1 intValue];
        int value2 = [number2 intValue];

        // 降序,即从大到小
//        if (value1 > value2)
//        {
//            return NSOrderedAscending;
//        }
//        else
//        {
//            return NSOrderedDescending;
//        }

        // 升序,即从小到大
        if (value1 > value2)
        {
            return NSOrderedDescending;
        }
        else
        {
            return NSOrderedAscending;
        }
}];
NSLog(@"2-1 %@", sortedArray);

2-2、NSComparator

NSComparator comparator = ^(id obj1, id obj2){

        int value1 = [obj1 intValue];
        int value2 = [obj2 intValue];

        // 升序,即从小到大
//        if (value1 > value2)
//        {
//            return (NSComparisonResult)NSOrderedDescending;
//        }
//        else if (value1 < value2)
//        {
//            return (NSComparisonResult)NSOrderedAscending;
//        }
//        else
//        {
//            return (NSComparisonResult)NSOrderedSame;
//        }

        // 降序,即从大小到
        if (value1 > value2)
        {
            return (NSComparisonResult)NSOrderedAscending;
        }
        else if (value1 < value2)
        {
            return (NSComparisonResult)NSOrderedDescending;
        }
        else
        {
            return (NSComparisonResult)NSOrderedSame;
        }
};
sortedArray = [array07 sortedArrayUsingComparator:comparator];
NSLog(@"2-2 %@", sortedArray);

2-3、NSSortDescriptor(ascending=YES为升序,即从小到大,ascending=NO为降序,即从大小到)

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:nil ascending:NO];
NSArray *sortArray = [NSArray arrayWithObjects:descriptor, nil];
sortedArray = [array07 sortedArrayUsingDescriptors:sortArray];
NSLog(@"2-3 %@", sortedArray);

数组的倒序

// 原始数组
NSArray *array = @[@"1", @"2", @"3"];

// 倒序的数组
array = [[array reverseObjectEnumerator] allObjects];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番薯大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值