官网文档: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 相当于做了一个总和操作。
注:可以返回不同类型的总值