在swift 4.2中从数组返回组[重复]

Posted

技术标签:

【中文标题】在swift 4.2中从数组返回组[重复]【英文标题】:Returning groups from array in swift 4.2 [duplicate] 【发布时间】:2019-05-22 13:10:37 【问题描述】:

我见过这个 SO question (How to return an subset of Array of characters?),但问题是它只处理字符串第一个字符的一次性返回。

我正在尝试实现一些不同的东西,但对 Swift 语言不够熟悉,不知道我需要什么功能。

我的问题如下,我有一个数组:

["10", "44", "33", "31", "38", "49", "8", "4", "40"]

“Swift 4.2”的返回方式是什么,例如,三人一组,即:

["10", "44", "33"]
["31", "38", "49"]
["8", "4", "40"]

还要记住,数组可能并不总是完全可整除(例如,上面的示例数组很容易有 10 个值而不是 9),所以我需要忽略数组末尾的任何“多余”数字。

【问题讨论】:

【参考方案1】:

在使用stride 创建的数组上使用map。作为to 传递array 中项目的最后一个索引,它可以被三整除而没有其余部分(多余的数字将被忽略)。现在在map 闭包中返回索引为$0...$0+2的元素数组

let array = ["10", "44", "33", "31", "38", "49", "8", "4", "40"]
let finalArray = stride(from: 0, to: array.endIndex - (array.endIndex % 3), by: 3).map 
    Array(array[$0...$0+2])

【讨论】:

有趣的是,我刚刚发现了 stride 功能,但我并没有将其用于此应用程序。谢谢!!! 不适用于计数不是 3 的倍数的数组。这个问题是重复的。看看马特的回答here @Carpsen90 我注意到了,但你的评论是之前写的 你不认为这是一个重复的问题吗?那里给出了更好的答案?回答重复的is discouraged。无论如何,你可以让你的解决方案更短finalArray.append(Array(array[n...min(n+2, array.count - 1)]))。还有其他改进可以使其更快... @Carpsen90 是的,我同意,但是很相似;来自 OP 的问题:...所以我需要忽略数组末尾的任何“多余”数字

以上是关于在swift 4.2中从数组返回组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中从 JSON 对象解析多个数组

在 Swift 中从数组中删除重复元素

在两个不同的构建中从一个数组中检索项目会返回不一致的结果

如何在 Swift 中从 Firebase 接收数组

如何在 Swift 中从文件夹中获取 UIImage 数组?

如何在 Swift 的 PickerView 中返回两个单独的数组