【发布时间】:2019-02-17 00:58:43
【问题描述】:
我有 50 个项目的数组。如何在没有 for 循环的情况下只在数组中保留最后 30 项?
【问题讨论】:
我有 50 个项目的数组。如何在没有 for 循环的情况下只在数组中保留最后 30 项?
【问题讨论】:
您可以使用ArraySlice:
let lastThirty = array[20...]
请注意lastThirty 的类型为ArraySlice,因此要将其作为数组取回,您可以这样做:
let lastThirtyArray = Array(lastThirty)
您可以阅读有关ArraySlices here 的更多信息。
【讨论】:
array[array.count-30...] ??
let a1 = [1,2,3,4,5]
print(a1[2...])
所以你只需要array[20...]
或array.dropfirst(20)
【讨论】:
dropFirst(_:) 更可取,因为它可以优雅地处理越界
你要找的是集合方法后缀
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]
【讨论】: