官网文档: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相关推荐

  1. java8 循环map_Java8遍历Map的三种方式——for/stream/forEach

    最近写在基于Spring WebFlux项目遇到一个需求,希望将请求中的cookie/headers/params等信息获取,而获取后的数据结构都是MultiValueMap的数据结构,实质上可以看做 ...

  2. Array.prototype.map() 、 Array.prototype.reduce()、Array.prototype.filter()

    文章目录 1. map 2. reduce 3. filter 1. map   map 函数接收一个回调函数作为参数,然后返回一个数组,这个数组中的每个元素都是调用回调函数后返回的结果.如: fun ...

  3. 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例

    为什么80%的码农都做不了架构师?>>> ECMAScript5标准发布于2009年12月3日,它带来了一些新的,改善现有的Array数组操作的方法.然而,这些新奇的数组方法并没有真 ...

  4. js 数组遍历方法详解(map、filter、find、findIndex、reduce)

    目录 前言 map map是什么 map方法的结构及入参 语法糖 map一般不改变原数组 filter 说明 例子 find 和 findIndex 说明 例子 reduce 说明 例子 尾言 前言 ...

  5. 初学者python笔记(map()函数、reduce()函数、filter()函数、匿名函数)

    文章目录 一.匿名函数 二.map()函数 三.reduce()函数 四.filter()函数 五.三大函数总结 本篇文章内容有Python中的匿名函数和map()函数.reduce()函数.filt ...

  6. 少侠留步! 你可能一直都误解了map,filter和reduce.

    少侠们好~ 今天和大家分享一篇关于JS数组里面的map,filter,reduce相关函数的知识, 相信少侠们肯定或多或少都了解过一些相关知识,特别对于map和filter这种很常用的函数的用法,可能 ...

  7. 微信小程序——数组操作 (增加删除修改遍历)map、filter、forEach、find的用法、二维数组,排序,求和、指定长度数组赋值

    一.数组的操作 Array.push() ->在数组后面继续插入内容 Array.pop() ->拿走数组最后一个内容 Array-shift()->拿走数组的第一个内容 (unsh ...

  8. 如何用Map、Filter和Reduce替换Python For循环?

    2020-01-06 17:00:00 全文共2375字,预计学习时长7分钟 图源:Unsplash 屏幕前的你,瞅瞅看,你的代码是不是通篇都是For循环?是不是眯眼靠近屏幕才能看清自己的代码? 没错 ...

  9. 在幕后看看Swift中的Map,Filter和Reduce的实现

    一个函数接受一些输入,对它做一些事情并创建一个输出.功能有签名和正文.如果为函数提供相同的输入,则始终获得相同的输出.简而言之,这是函数的定义. 现在我们将通过仔细研究它们来讨论更多功能.我们将在Sw ...

最新文章

  1. 深入java虚拟机 第四版_深入理解Java虚拟机-常用vm参数分析
  2. 009_Get请求中文乱码
  3. 编程之美-饮料供货方法整理
  4. wince 6.0 设备管理器架构(Device Manager Architecture)
  5. Synchronize和Lock 的区别与用法
  6. javafx canvas_JavaFX技巧1:可调整大小的Canvas
  7. 应用商店应用计算机,基于中国虹计算机的应用商店的设计与实现
  8. Vue检测web端和移动端,并强制手机横屏
  9. php final这个关键词代表什么,php中final关键字用法分析
  10. TiCDC同步延迟问题处理
  11. iPhone/iPad苹果设备型号对应常用名称列表(2022更新至iPhone 14 Pro Max | iPad Air 5)
  12. CSP202109-4 收集卡牌
  13. 培训班出来的java程序员,怎么成为真正的技术大牛?
  14. python version-32 required_python version 3.6 required,which was not fount in the regis-站长资讯中心...
  15. gets与puts的使用,Str系列字符串的使用
  16. C 三个学生四门成绩,求成绩总和与平均值
  17. grok在python 中的使用
  18. 用osworkflow写一个请假例子
  19. css硬件加速,用CSS开启硬件加速提高网站性能
  20. 安徽专业计算机应用能力考试,安徽省计算机应用能力考试时间安排出炉

热门文章

  1. SpringCloud动态刷新配置信息
  2. Apache HTTP服务器和支持程序 —— apachectl
  3. TensorFlow Google大会总结
  4. 方便的boost_python
  5. 常见的和端口,IP相关的企业面试题
  6. 苹果新的编程语言 Swift 语言进阶(三)--基本运算和扩展运算
  7. 每天首次登陆记录设备信息
  8. layer.js弹窗组件layer.prompt无法调用解决
  9. Add margining capability to a dc/dc converter
  10. Adhesive框架系列文章--分布式组件客户端模块使用