在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中从数组返回组[重复]的主要内容,如果未能解决你的问题,请参考以下文章