使用reduce 或join 组合数组有什么区别?

2023-12-12

考虑以下字符串数组:

let arrayStrings = ["H", "e", "l", "l", "o"]

为了组合它的元素(将“Hello”作为单个字符串),我们可以:

reduce it:

let reducedString = arrayStrings.reduce("", { $0 + $1 }) // "Hello"

Or join it:

let joinedString = arrayStrings.joined() // "Hello"

两者都会返回“Hello”字符串作为输出。

然而,要记住什么逻辑才能确定这样的过程的更好选择?根据性能进行比较有什么区别?


有两个原因joined是一个更好的选择reduce:

  1. 可读性

    如果你想将多个字符串连接成一个字符串,为什么要使用reduce,手动连接?如果您想要执行的任务有特定的功能,请使用它。读完代码就更容易理解了joined than reduce.

  2. 表现

    joined for String可以比更好地实施reduce。不一定是这样,但可以。reduce一次对一个元素进行操作,无需了解其他元素,并传递许多临时变量。joined拥有整个序列的知识,并且知道操作始终相同,因此可以进行优化。它甚至可以使用的内部结构String. See String.joined 实现.

总之,始终使用更具体的实现。 请注意,上述性能原因并不是最重要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用reduce 或join 组合数组有什么区别? 的相关文章

  • 如何过滤掉数组的数组

    您好 我有一个包含多个值的数组 我想尝试过滤掉搜索栏的索引 英语术语的一个例子是这样的 给我名称 Name2 的索引 并通过检查每个索引的第一个值中的所有字符串来执行此操作 Code Multiple Errors var received
  • 如何在 JavaScript 中构建一个计算数组中出现次数的对象?

    我想计算数组中某个数字出现的频率 例如 在Python中我可以使用Collections Counter创建一个字典 记录某个项目在列表中出现的频率 据我所知 JavaScript 是这样的 var array 1 4 4 5 5 7 va
  • 是否保证 sizeof(T[N]) == N * sizeof(T) ?

    我一直假设 N 个元素类型的数组的大小T 由返回sizeof保证正好是N次sizeof T The 对这个问题的评论 https stackoverflow com questions 46457449 is it always the c
  • CNContact 添加新的联系人问题

    我在通过以下方式添加联系人时遇到问题联系框架 我使用的是装有 iOS 12 1 2 的 iPhone 5s 设备 我添加联系人的代码如下 let saveRequest CNSaveRequest saveRequest add self
  • 如何获取数组中最后 5 个元素(不包括第一个元素)?

    在 JavaScript 数组中 如何获取最后 5 个元素 排除第一个元素 1 55 77 88 would return 55 77 88 添加其他示例 1 55 77 88 99 22 33 44 would return 88 99
  • iOS 上每个选项的带有图像的操作表

    有没有办法在 iOS 上将图像添加到操作表中 与苹果在应用程序商店或苹果音乐应用程序上所做的一样 我对苹果文档的基本搜索表明我没有在操作表中子类化或添加子视图 UIActionSheet 并非设计为子类化 也不应向其层次结构添加视图 苹果文
  • 如何调试性能问题/优化您的流星应用程序

    我刚刚将 Meteor 应用程序部署到 Digital Ocean 上的生产服务器上 我注意到 对于大约 7500 个文档 完全获取对象 有选择地仅获取 3 个字段 并填充自动完成数据大约需要 3 5 秒 我相信对于如此数量的数据来说 它应
  • 在 Swift 3 中单击和双击 UITableViewCell

    我在 TableView Cell 上有故事板 segue 我用它来在单元格单击中传输到另一个 VCdidSelectRowAt方法 现在我双击了TapGestureRecognizer处理手机上的点击问题 问题是 单击时 segue 正在
  • 在 Swift 中将 Int 转换为 UInt32

    我正在制作一个 Tcp 客户端 因此使用CFStreamCreatePairWithSocketToHost它期望第二个参数为 UInt32 这是我正在尝试做的事情的示例 func initNetwork IP String Port In
  • 在 postgresql 9.4 或 9.5 中查询 json 对象的嵌套数组中的元素

    studentID 1 StudentName jhon Data schoolname school1 enrolmentInfo year 2015 info courseID csc213 school IT enrollmentda
  • 如何清除chrome性能条目或绕过其数量限制?

    我使用 Google Chrome 来分析一些使用 Javascript 动态加载脚本和其他资源的网页的性能 我用performance getEntries 方法 但我注意到 Chrome 只记录前 150 个资源 我找不到任何方法来获取
  • Swift 对异步编程有什么语言级别的支持(如果有)?

    当应用程序必须通过不可预测的网络 例如智能手机应用程序 进行通信时 异步编程对于响应式用户界面来说是必须的 用户界面必须保持响应 同时等待结果从互联网上某处的服务器返回 在大多数语言中 应用程序程序员必须实现自己的状态机 可能使用闭包 来响
  • 当名称是数组时如何使用 Javascript 修改 HTML Select

    我有两个同名的 html select 对象 它们是具有不同索引的数组 我想做的是 如果从类别 0 选择元素中选择 关闭 我想禁用类别 1 元素 我一直在尝试使用 document getElementsByName 但无法弄清楚如何专门针
  • 使用 OpenCV 描述符与 findFundamentalMat 匹配

    我之前发布了有关同一程序的问题 但没有收到答案 我已经纠正了当时遇到的问题 但又面临新的问题 基本上 我使用未校准的方法自动校正立体图像对的旋转和平移 我使用 SURF 等特征检测算法来查找两个图像 左右立体图像对 中的点 然后再次使用 S
  • 在 Swift 中检查一个数组是否包含另一个数组的所有元素

    我想为数组编写一个扩展来检查一个数组是否包含另一个数组的所有元素 在我的用例中它是字符串对象 但我一直得到 Cannot convert value of type T Generator Element to expected argum
  • 如何按值删除数组中的多个项目?

    我正在尝试做一个removeAll 函数 它将删除具有该特定值 而不是索引 的数组的所有元素 当我们对循环进行任何更改时 棘手的部分就出现了 索引往往会移动 使其很难像我们想要的那样工作 并且每次更改时都重新启动循环 这在大数组上效率非常低
  • 打印附加结构(swift 4)

    我有三个 textifled 用于将数据附加到结构中 如何打印我附加的内容 现在我收到一条错误消息 import UIKit class ViewController UIViewController IBOutlet var c UITe
  • 为什么 ConcurrentHashMap::putIfAbsent 比 ConcurrentHashMap::computeIfAbsent 更快?

    使用 ConcurrentHashMap 我发现computeIfAbsent 比putIfAbsent 慢两倍 这是简单的测试 import java util ArrayList import java util List import
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里

随机推荐

  • requiredFieldValidator 在更新面板中工作异常

    我有一个带有文本框 必填字段验证器和几个按钮的更新面板 页面加载时 您会看到一个标签和一个按钮 按下按钮时 将显示文本框和验证器 以及其他按钮 显示的基本变化效果很好 但是 即使文本框已填充 我的验证器 设置为动态 也会显示其错误消息 假设
  • 强制 iOS 从 HTML5 Canvas 下载图像(使用纯 JavaScript)

    这个问题之前已经被问过 普遍的回答是在 iOS 上无法完成 However这些问题已经存在了好几年了 有可能已经制定了解决方法 或者现在有办法做到这一点 我有一个可用的纯 JavaScript 图像编辑器 它不会让最后的编辑步骤 保存编辑后
  • 动态高度浏览器

    我正在尝试在自定义滚动视图中创建一个自定义视图分页器 动态包裹当前孩子的高度 package com example vihaan dynamicviewpager import android content Context import
  • Python win32com 和二维数组

    当使用 python 和 win32com 来自动化 Adob e 软件时 会遇到传递 2d 坐标数组的问题 如果看一下 Adob e 为 Visual Basic VB 提供的代码 就会发现很简单 在 Illustrator 中绘制线条的
  • Gorm 关系错误:需要为关系定义有效的外键或者需要实现 Valuer/Scanner 接口

    我正在对使用 Gorm 时出现的问题进行故障排除 我的 sqlite3 数据库和 Go 数据模型一切都工作得很好 但是当我遇到一些依赖项问题时 无法在构建环境中 进入 所以我尝试从供应商文件夹中复制 删除一些包 然后重新 去 直到我让构建工
  • 连接组件

    我有一组数据 是通过将相似的子项目匹配在一起创建的 然后按 类别 对这些相似的项目进行分组 现在 结果类别必须以在每个 group id 内将相关类别分组在一起的方式进行匹配 在下面的示例中 一个匹配是 A gt B gt C gt D g
  • 使用 Windows Phone 7 解析包含数组的 JSON 对象

    好吧 我在这方面遇到了一些困难 我的 JSON 就像 names name bla name bla2 我试图做本教程但是 由于 JSON 不同 它不起作用 我必须在这个方法中放入什么 我不知道创建一个包含我的列表的 包装 类或直接使用 J
  • 仅当文件存在时追加到文件

    我已经看到了几个关于如何附加到文件 如果存在 和创建新文件 如果不存在 的答案 echo hello gt gt file txt 或覆盖文件 如果存在 如果不存在则创建一个文件 echo hello gt file txt 但我如何确保e
  • 预期语句 End If

    我在表单中设置了以下代码 但收到 预期语句 错误 我第一次这样做并认为我的语法正确 我错过了什么 使用嵌套 2 路条件时 每个条件必须由自己的条件结束End If If condition A Th
  • 在define_method中使用局部变量

    我想了解如何define method工作原理以及如何正确使用定义块之外的变量 这是我的代码 class Test def self plugin for i in 1 2 define method test i to sym do p
  • 存储过程获取想要的结果集以提高性能-MYSQL

    我对 mysql 完全陌生 正在努力编写存储过程来获取所需的结果集 正如你所看到的 下面是我的表格 我在用着节点和快车要连接的 APImysql数据库 然后我使用以下命令进行单独查询以获得所需的结果for loop 当我处理数百万条记录时
  • Salesforce对象描述有大数据,如何从Salesforce对象描述中获取有限的数据,例如选项列表值

    我正在寻找获取销售人员对象的字段和选项列表的方法 我可以使用 REAT API 调用来完成此操作 describe在对象名称之后 但有时返回的 JSON 数据非常大 其中有 95 的额外数据是我不想要的 并且带有重复的模式字符串 仅仅为了获
  • 锚标记的 onclick 事件上未定义 Javascript 函数

    我无法访问锚标记的 onclick 事件中的 javascript 函数 在某些情况下它有效 而在某些情况下则无效 任何人都可以说出为什么会发生这种情况吗 HTML 代码 a href class btn waves effect wave
  • ggplot2 饼图和圆环图在同一图上

    I am trying to replicate this with R ggplot I have exactly the same data browsers lt structure list browser structure c
  • SAS 宏,将值作为字符串传递给 where 子句

    我下面有一个 SAS 宏不起作用 此代码片段不返回任何值 因为 where 语句不起作用 有人有主意吗 我尝试添加 str 但这也不起作用 macro refreshments beverage type proc sql select w
  • WPF DataGrid 性能 - 筛选性能

    我们正处于将应用程序从 SilverLight 转换为 WPF 的阶段 我们在其中开发了 我们自己的自定义 DataGrid 位于 Silverlight 的本机 DataGrid 之上 应用程序由大量视图组成 其中 近 99 的视图都在使
  • 如何在SQL中根据多个“标签”查询数据?

    我有三个简单的表 Items ItemID int PK ItemName nvarchar50 ItemCost int Tags TagID int PK TagName nvarchar50 ItemTags ItemID int F
  • Foreach 循环(或者 do while 可能?) - 只想根据页面返回一条记录

    使用下面编辑的代码解决了这个问题 感谢所有提供帮助的人 我的数据库中有两条记录 每条记录有 6 个字段 challengeId partnerName code challengeTitle description image url 我从
  • 解析 CSV 文件并聚合值、多列

    我想修改这里的帖子 解析 CSV 文件并聚合值 对多列而不是一列求和 所以对于这些数据 CITY AMOUNT AMOUNT2 AMOUNTn London 20 21 22 Tokyo 45 46 47 London 55 56 57 N
  • 使用reduce 或join 组合数组有什么区别?

    考虑以下字符串数组 let arrayStrings H e l l o 为了组合它的元素 将 Hello 作为单个字符串 我们可以 reduce it let reducedString arrayStrings reduce 0 1 H