008-数组

1、数组的定义

  • 1-1、在swift中数组没有,不变和不可变区别
func demo() {
        //定义数组
        let array = ["小明", "小红", "小黑"]
        //自动推导的结果 -> 表示数组中存放的都是 String
        print(array)
        
    }
  • 1-2、swift中基本数据类型不需要包装
func demo1() {
        let array1 = [1, 2, 3, 4, 5]
        print(array1)
        //输出结果:[1, 2, 3, 4, 5]
    }
  • 1-3、cg 结构体
    func demo2() {
        let p = CGPoint(x: 10, y: 20)
        let array2 = [p]
        print(array2)
        //输出结果:[(10.0, 20.0)]
    }
  • 1-4、数组中元素类型不同
func demo3() {
        let p = CGPoint(x: 10, y: 20)
        
        let array3 = ["小明", 12, NSValue(cgPoint:p)] as [Any]
        print(array3)
        //输出结果:[(10.0, 20.0)]
    }

小结:

  • 1、混合数组:开发中几乎不用,因为数组是靠下标索引
  • 2、如果数组中的类型不一致,自动推导的结果[NSObject]
  • 3、在swift中还有一种类型[Anyobject] ->任意对象
  • 4、在swift中一个类可以没有任何‘父类’
  • 5、在混合的数组中,CG 结构体需要包装

2、数组遍历

func demo4() {
        let array = ["张三", "李四", "王五"]
        //1、按照下标遍历
        print("--- 按照下标遍历 ---")
        for i in 0..<array.count {
            print(array[i])
            //输出结果:
//            张三
//            李四
//            王五
        }
        
        //2、for in 遍历元素
        print("---for in 遍历元素 ---")
        for s in array {
            print(s)
//            输出结果:
//            张三
//            李四
//            王五
        }
        
        //3、enum block 遍历元素, 同时遍历下标和内容
        print("--- enum block 遍历元素, 同时遍历下标和内容 ---")
        for e in array.enumerated() {
//            print(e)
            print("\(e.offset)  \(e.element)")
//            输出结果:
//            0  张三
//            1  李四
//            2  王五
        }
        
        //4、遍历下标和内容2
        print("___ 遍历下标和内容2 ____")
        for (n, s) in array.enumerated() {
            print("\(n) \(s)")
//            输出结果:
//            0 张三
//            1 李四
//            2 王五
        }
        
        //5、反序遍历
        print("___ 反序遍历 ___")
        for s in array.reversed() {
            print(s)
//            输出结果:
//            王五
//            李四
//            张三
        }
        
        //6、反序列索引&内容
        print("___ 反序列索引&内容 ___")
        for (n, s) in array.reversed().enumerated() {
            print("\(n) - \(s)")
//            输出结果:
//            0 - 王五
//            1 - 李四
//            2 - 张三
        }
        
        //7、先枚举、再反序
        print("___ 先枚举、再反序 ___")
        for (n, s) in array.enumerated().reversed() {
            print("\(n) - \(s)")
        }
//        输出结果:
//        2 - 王五
//        1 - 李四
//        0 - 张三

    }

3、数组的 增、删、改

func demo5() {
        var array = ["小明", "小红", "小黑"]
        print(array)
        //输出结果:["小明", "小红", "小黑"]
        //1、增加元素
        array.append("小敏")
        print(array)
        //输出结果:["小明", "小红", "小黑", "小敏"]
        
        //2、修改
        array[0] = "小七"
        print(array)
        //输出结果:["小七", "小红", "小黑", "小敏"]
        
        //3、删除元素
        array.remove(at: 2)
        print(array)
        //输出结果:["小七", "小红", "小敏"]
        
        //4、删除全部元素,并且保留空间
        array.removeAll(keepingCapacity: true)
        print("\(array) 容量\(array.capacity)")
        //输出结果:[] 容量6
        
        array.removeAll()
        print("\(array) 容量\(array.capacity)")
        //输出结果:[] 容量0
        
    }

4、数组合并

    func demo6() {
        var array = [1, 2, 3, 4, 5]
        let array1 = [5, 4, 3, 2, 1]
        array += array1
        print(array)
        //合并后的结果:[1, 2, 3, 4, 5, 5, 4, 3, 2, 1]
    }

小结:数组合并时:要合并数组的两个类型必须一致

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容