在Swift中,是否有聪明的方法在Array上使用高阶方法来返回5个第一个对象?obj- c的实现方式是保存索引,并通过循环递增数组递增索引直到索引为5并返回新数组。有没有办法做到这一点filter,map或者reduce?
filter
map
reduce
到目前为止,获取Swift数组的前N个元素的最简洁的方法是使用prefix(_ maxLength: Int):
prefix(_ maxLength: Int)
let someArray = [1, 2, 3, 4, 5, 6, 7] let first5 = someArray.prefix(5) // 1, 2, 3, 4, 5
这具有边界安全的好处。如果传递给您的计数prefix大于数组计数,则它将仅返回整个数组。
prefix
注意: 如 注释中 所指出,Array.prefix实际上返回ArraySlice,而不是Array。在大多数情况下,这没有什么区别,但是如果您需要将结果分配给Array类型或将其传递给期望Array参数的方法,则需要将结果强制为Array类型:let first5 = Array(someArray.prefix(5))
Array.prefix
ArraySlice
Array
let first5 = Array(someArray.prefix(5))