在 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]