在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在开发中,数组这个概念我们应该很熟悉了,Objective-C 中为我们提供了 NSArray 作为数组的实现。大家应该对很熟悉了。而在 Swift 中,为我们提供了它自己对于数组的实现,也是这里我们要介绍的,就是 Array 类。 Array 的官方文档可以参看这里: SwiftStandardLibraryReference 废话不多说,下面就开始我们的主题啦。 <!-- more --> 创建数组我们要使用一个数组,首先要做的就是创建它,Array 类为我们提供了几种方式来创建:
我们这里声明了一个空的数组,数组的元素是 Int 类型,我们还可以这样初始化数组:
这样的写法和前面那个的效果是一样的。我们还可以这样进行初始化:
这个初始化方法,里面使用 4 个数字 5 来填充这个数组,并且数组元素的类型为 Int。 访问数组的元素我们的数组创建完成后,我们就可以通过下标来引用它里面的元素了:
我们还可以通过下标来修改数组中的元素:
但我们不能通过下标修改 let 关键字定义的常量数组:
Swift 还提供了范围的下标访问:
我们用 arr[0...2] 这种形式的索引,就可以访问到数组中某一区域的元素了,这点从上面的例子中就能看出来啦。 我们甚至还可以用范围索引来设置数组的元素,前提是这个数组是用 var 定义的:
添加删除元素Swift 中的 Array 还为我们提供几个相关的方法,append 用于向数组添加元素,添加的元素在数组的最后。insert 方法向数组指定的索引插入元素, removeAtIndex 方法用来删除指定索引位置的元素。 removeLast 用于删除数组最后一个元素。我们来看一下如何使用这些方法:
这几个方法使用起来非常方便,也满足了我们对数组的大部分操作要求,接下来我们继续。 查询数组状态Array 提供了 count 属性来返回数组当前的元素个数。 isEmpty 属性用于判断数组是否为空。
数组算法操作sort 方法除了上面那些使用的方法,Array 还提供了几个方便的算法操作,sort 方法用于对数组进行排序,我们可以很轻松的就实现数对数组的升序和降序排列:
sort 方法接受一个回调方法,用于返回两个值的比较顺序,我们上面的例子中,判断第一个参数是否比第二个参数的值小,这样就形成了一个升序排列。 sorted 方法Array 还提供了一个 sorted 方法,这个方法和 sort 方法基本一样,也是接受一个回调方法用于确定元素间的顺序。唯一一点不同的是,sort 是对数组本身进行排序,也就是意味着 sort 方法会修改数组本身的内容。 而 sorted 就不会修改原有的数组,而是返回一个经过排序处理后的新的数组:
使用 sorted 方法后,我们得到了一个新的数组。 reverse 方法Array 的 reverse 方法可以将数组中的元素倒序排列:
通过这个方法,我们将数组中的元素顺序颠倒了。 filter 方法Array 还提供了一个 filter 方法,可以根据传入的回调方法的判断标准来筛选数组的元素,并返回一个新的数组:
这个 filter 方法,筛选出 array 数组中的所有偶数,并返回给新的 newArr 数组。 map 方法是不是觉得 Array 提供了很多便捷的方法呢,还远不止如此呢,这个 map 方法就更加强大了。它能够根据制定的规则对数组的元素进行处理:
这个 map 方法的调用将数组中的所有元素都乘以2,返回了一个新的数组。 怎么样,非常方便吧,有没有感觉这些便捷的方法省去了你很多的 for 循环之类的东西呢,从此你的代码更加简洁明快了,心情也更为舒畅了吧。接下来我们再来了解一个。 reduce 方法这个方法更有意思,reduce 的字面为减少执意,用在我们这里就是通过一个处理方法,将数组中所有的元素进行处理,并最终产生一个值:
看过上面这段代码就很明白了吧,通过 { $0 + $1 } 这个闭包方法,我们将数组中所有的元素累加起来,并返回给一个新的变量。 对操作符的支持到这里,你是不是觉得 Array 很好用呢,还不止如此,Swift 中的 Array 还提供了对操作符的支持,我们可以使用 += 操作符,来对两个数组进行连接:
很方便吧。 好了,讲了这么多,相信大家对 Array 类已经有了一个大概的了解了。为我们提供的这些方法,可以很明显的减少我们的代码量,提升我们的开发效率。比如我们刚刚提到的 += 操作符的支持。如果没有这个操作符支持,我们要对两个数组进行连接的话,我们就需要写 for 循环,还有好多冗余的代码。 相信如果大家理解了这些方法的使用,它们就能够帮助你大大的提高开发效率。起到事半功倍的作用。这篇文章只是对 Array 类的一个大体的介绍,关于 Array,相信还有很多有待发掘的东西,这个机会就交给电脑前的你们了,欢迎大家把在开发过程中关于 Array 的问题和经验在下面留言和大家一起分享交流。 更多文章请访问: www.theswiftworld.com 更多好文,扫码关注微信公众号: |