美文网首页
关于Swift的骚操作(一)之数组的操作:三个高阶函数(map、

关于Swift的骚操作(一)之数组的操作:三个高阶函数(map、

作者: 岁变 | 来源:发表于2017-07-31 17:38 被阅读117次

    数组是我们在编程过程中最常用到的一种数据结构,swift中的Array与oc中的NSArray相比,NSArray只能存储对象,像是Int就不能直接存在NSArray中,而Array可以存储任意类型,虽然就目前为止Array提供的功能还没有NSArray全面强大,但swift强大的类型推断特性,给Array数组的操作带来很大的简化,今天写一下swift中关于Array数组操作的三个高级函数:map、filter、reduce。当作自己的学习笔记

    对于数组的处理,如果想要对数组中的所有元素进行统一的处理,你会想到什么方法,对数组进行遍历,然后再进行相应的操作处理,之前我也会直接就这样做,但swift提供了三个关于数组操作的三个高级操作,用这三个函数去处理数组,会使得自己的代码逼格很高,而且非常简便,并且在数据量很大的情况下,也很提高执行的速度。

    (一)map

    它是用于将数组中每一个元素进行统一的类型转换处理,返回的是一个新的数组

    一个例子就可以让大家很直观的了解它的用法:

    let numbers = [3, 1, 5, 6, 10, 9]
    

    现要将一个数组(存储int)每个元素变成字符串并且后面拼接一个“+”号,这样我们就可以用map进行处理

     let newArr = numbers.map {"\($0)+"}
    
    

    在swift中可以用$0来代替闭包中的参数,第一个参数为$0,第二个为$2,以此类推,所以这里面$0可以理解为numbers中的每一个元素值。

    简单的一行代码就完成了需求,很简单,只要大家知道了有着冲处理方法,很快就能熟练运用。

    (二)Filter

    这是用于对数组中的元素进行筛选的,返回的也是一个新的数组

    同样完成一个例子:将上面的numbers数组选出其中大于5的数

     let newArr = numbers.filter {$0 > 5}
    
    

    (三)Reduce

    reduce是把数组中的每一个元素合成一个元素的处理,返回值是一个值类型

    一个例子了解他的用法:计算numbers数组的所有元素的和

    let number1 = numbers.reduce(0, {$0 + $1})
    

    其中0是初始值,$0为计算结果值,$1为数组元素值

    也可以运用reduce处理数组中每一个元素的乘积

     let number2 = numbers.reduce(1, {$0 * $1})
    

    与算总和不同的是这里面的初始值是1

    这样三个关于Array操作的函数就介绍完了,在合适的场景下运用这些高级一点处理方法,会有很好的效果。

    相关文章

      网友评论

          本文标题:关于Swift的骚操作(一)之数组的操作:三个高阶函数(map、

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