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 相当于做了一个总和操作。
注:可以返回不同类型的总值
Swfit Array 遍历 map flatMap filter reduce相关推荐
- java8 循环map_Java8遍历Map的三种方式——for/stream/forEach
最近写在基于Spring WebFlux项目遇到一个需求,希望将请求中的cookie/headers/params等信息获取,而获取后的数据结构都是MultiValueMap的数据结构,实质上可以看做 ...
- Array.prototype.map() 、 Array.prototype.reduce()、Array.prototype.filter()
文章目录 1. map 2. reduce 3. filter 1. map map 函数接收一个回调函数作为参数,然后返回一个数组,这个数组中的每个元素都是调用回调函数后返回的结果.如: fun ...
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
为什么80%的码农都做不了架构师?>>> ECMAScript5标准发布于2009年12月3日,它带来了一些新的,改善现有的Array数组操作的方法.然而,这些新奇的数组方法并没有真 ...
- js 数组遍历方法详解(map、filter、find、findIndex、reduce)
目录 前言 map map是什么 map方法的结构及入参 语法糖 map一般不改变原数组 filter 说明 例子 find 和 findIndex 说明 例子 reduce 说明 例子 尾言 前言 ...
- 初学者python笔记(map()函数、reduce()函数、filter()函数、匿名函数)
文章目录 一.匿名函数 二.map()函数 三.reduce()函数 四.filter()函数 五.三大函数总结 本篇文章内容有Python中的匿名函数和map()函数.reduce()函数.filt ...
- 少侠留步! 你可能一直都误解了map,filter和reduce.
少侠们好~ 今天和大家分享一篇关于JS数组里面的map,filter,reduce相关函数的知识, 相信少侠们肯定或多或少都了解过一些相关知识,特别对于map和filter这种很常用的函数的用法,可能 ...
- 微信小程序——数组操作 (增加删除修改遍历)map、filter、forEach、find的用法、二维数组,排序,求和、指定长度数组赋值
一.数组的操作 Array.push() ->在数组后面继续插入内容 Array.pop() ->拿走数组最后一个内容 Array-shift()->拿走数组的第一个内容 (unsh ...
- 如何用Map、Filter和Reduce替换Python For循环?
2020-01-06 17:00:00 全文共2375字,预计学习时长7分钟 图源:Unsplash 屏幕前的你,瞅瞅看,你的代码是不是通篇都是For循环?是不是眯眼靠近屏幕才能看清自己的代码? 没错 ...
- 在幕后看看Swift中的Map,Filter和Reduce的实现
一个函数接受一些输入,对它做一些事情并创建一个输出.功能有签名和正文.如果为函数提供相同的输入,则始终获得相同的输出.简而言之,这是函数的定义. 现在我们将通过仔细研究它们来讨论更多功能.我们将在Sw ...
最新文章
- 深入java虚拟机 第四版_深入理解Java虚拟机-常用vm参数分析
- 009_Get请求中文乱码
- 编程之美-饮料供货方法整理
- wince 6.0 设备管理器架构(Device Manager Architecture)
- Synchronize和Lock 的区别与用法
- javafx canvas_JavaFX技巧1:可调整大小的Canvas
- 应用商店应用计算机,基于中国虹计算机的应用商店的设计与实现
- Vue检测web端和移动端,并强制手机横屏
- php final这个关键词代表什么,php中final关键字用法分析
- TiCDC同步延迟问题处理
- iPhone/iPad苹果设备型号对应常用名称列表(2022更新至iPhone 14 Pro Max | iPad Air 5)
- CSP202109-4 收集卡牌
- 培训班出来的java程序员,怎么成为真正的技术大牛?
- python version-32 required_python version 3.6 required,which was not fount in the regis-站长资讯中心...
- gets与puts的使用,Str系列字符串的使用
- C 三个学生四门成绩,求成绩总和与平均值
- grok在python 中的使用
- 用osworkflow写一个请假例子
- css硬件加速,用CSS开启硬件加速提高网站性能
- 安徽专业计算机应用能力考试,安徽省计算机应用能力考试时间安排出炉