在 Swift4 中使用数组对数组进行子集化
using an array to subset an array in Swift4
这一定是一个非常基础的问题。在像 R 这样的语言中,您可以采用数组(此处为 swift 语法)
let x = [1,2,3,4,5]
并使用索引数组提取多个元素。那就是我希望能够做类似 say 的事情(现在使用伪 Swift 语法,因为它不解析)
x[[0,2,3]]
获得
的 return 值
[1,3,4]
但这不能直接在 Swift 中起作用。有这样做的标准方法吗?我目前正在使用 Swift4.
我不知道 Swift Array
class 中有任何内置功能可以做到这一点。
一种可能的解决方案是定义 Array
的扩展,过滤数组以仅包含提供的索引处的元素。
extension Array {
func elements(at indices: [Int]) -> Array<Element> {
return self.enumerated().filter { indices.contains([=10=].0) }.map { [=10=].1 }
}
}
用法示例:
let x = [1,2,3,4,5]
let res = x.elements(at: [0,2,3])
print(res)
输出:
[1, 3, 4]
这一定是一个非常基础的问题。在像 R 这样的语言中,您可以采用数组(此处为 swift 语法)
let x = [1,2,3,4,5]
并使用索引数组提取多个元素。那就是我希望能够做类似 say 的事情(现在使用伪 Swift 语法,因为它不解析)
x[[0,2,3]]
获得
的 return 值[1,3,4]
但这不能直接在 Swift 中起作用。有这样做的标准方法吗?我目前正在使用 Swift4.
我不知道 Swift Array
class 中有任何内置功能可以做到这一点。
一种可能的解决方案是定义 Array
的扩展,过滤数组以仅包含提供的索引处的元素。
extension Array {
func elements(at indices: [Int]) -> Array<Element> {
return self.enumerated().filter { indices.contains([=10=].0) }.map { [=10=].1 }
}
}
用法示例:
let x = [1,2,3,4,5]
let res = x.elements(at: [0,2,3])
print(res)
输出:
[1, 3, 4]