【问题标题】:Swift - Leave last X number items in arraySwift - 将最后 X 个项目保留在数组中
【发布时间】:2019-02-17 00:58:43
【问题描述】:

我有 50 个项目的数组。如何在没有 for 循环的情况下只在数组中保留最后 30 项?

【问题讨论】:

标签: arrays swift


【解决方案1】:

您可以使用ArraySlice

let lastThirty = array[20...]

请注意lastThirty 的类型为ArraySlice,因此要将其作为数组取回,您可以这样做:

let lastThirtyArray = Array(lastThirty)

您可以阅读有关ArraySlices here 的更多信息。

【讨论】:

  • 如果我有超过 50 个项目,我可以使用array[array.count-30...] ??
  • 是的,你可以!不过,在进行拼接之前,您可能需要检查以确保您的数组长度超过 30。
【解决方案2】:
  let a1 = [1,2,3,4,5]
  print(a1[2...])

所以你只需要array[20...]

array.dropfirst(20)

【讨论】:

  • dropFirst(_:) 更可取,因为它可以优雅地处理越界
  • 只有当数组正好有 50 个元素时才会返回 30 个元素。
【解决方案3】:

你要找的是集合方法后缀

func suffix(_ maxLength: Int) -> ArraySlice

它将返回 n 个元素,不超过您集合中的元素数:

let input = Array(1...100)
let last30 = input.suffix(30)  // [71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

【讨论】:

    猜你喜欢
    • 2021-06-07
    • 2015-12-05
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多