Swfit Array 遍历 map flatMap filter reduce

官网文档:Apple Developer Documentation

常用属性和方法可查看官网文档。

一、遍历

这里主要记录下遍历方法。

使用for in 遍历

for item in arr {
    print(item)
}


获取下标和值的遍历方式

for (index, item) in arr.enumerated {
    print(“下标\(index) 值\(item)”)
}

从尾开始遍历(没有找到直接方法,找了一个折中方法),非常适合涉及到删除操作的时候。

for index in (0..<arr.count).reversed() {
    print(arr[index])
}

二、map方法[映射]

作用: 通过闭包数组内各项进行变换操作,返回操作后的值作为新数组的对应项值, 最后返回新数组,老数组不变。

返回的值类型可以是新类型。

一句话描述: map是将数组转换为一个全新的数组

示例代码:

let cast = ["Vivien", "Marlon", "Kim", "Karl"]
let lowercaseNames = cast.map { $0.lowercaseString }       //这里的转化操作是,将大写字母变为小写 $0 表示当前项值
// 'lowercaseNames' == ["vivien", "marlon", "kim", "karl"]
let letterCounts = cast.map { $0.count }                   //这里获得字数的数组 
// 'letterCounts' == [6, 6, 3, 4]

注:如果有多行表达式可写成完整形势

三、flatMap方法[完全映射]

作用:与map方法相似,还是对数组转化,产生一个新数组,只不过新数组不存在nil 而且会自动解option 

示例代码:

let possibleNumbers = ["1", "2", "three", "///4///", "5"]

let mapped: [Int?] = possibleNumbers.map { str in Int(str) }  //使用map方法
// [1, 2, nil, nil, 5]

let flatMapped: [Int] = possibleNumbers.flatMap { str in Int(str) }  //使用flatMap  将nil值去掉了。 
// [1, 2, 5] 

注:可以避免nil数据和解option  ,但是可能会造成数据的漏掉。

扩展:flat Map还可方便将多维数组转化为一维数组。
 

四、filter方法 [过滤]

作用:对数组各项进行条件筛选,返回符合项(并没有改变值喔)作为新数组值。

let numbers = [1,2,3,4,5,6]
let filterNum = numbers.filter { $0 % 2 == 0 }
// [2, 4, 6]
print(filterNum)

五、reduce方法  【归纳,重叠处理】

作用:map,flatMap和filter方法都是通过一个已存在的数组,生成一个新的、经过修改的数组。然而有时候我们需要把所有元素的值合并成一个新的值 那么就用到了reduce
实例代码:

let numbers = [1, 2, 3, 4]
let numberSum = numbers.reduce(0, { x, y in  //第一个参数初始值 ,第二参数上一次的操作结果 第三个参数:y 此次数组项值  
    x + y
})
// numberSum == 10 相当于做了一个总和操作。

注:可以返回不同类型的总值
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值