【问题标题】:Returning groups from array in swift 4.2 [duplicate]在swift 4.2中从数组返回组[重复]
【发布时间】: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),所以我需要忽略数组末尾的任何“多余”数字。

【问题讨论】:

    标签: swift


    【解决方案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 的问题:...所以我需要忽略数组末尾的任何“多余”数字
    猜你喜欢
    • 1970-01-01
    • 2011-09-19
    • 2015-06-28
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    相关资源
    最近更新 更多