在Swift4中使用数组来子集数组

时间:2019-01-11 17:22:25

标签: arrays swift4

这必须是一个非常基本的问题。在R之类的语言中,您可以采用数组(此处为swift语法)

let x = [1,2,3,4,5]

并使用索引数组提取多个元素。那就是我希望能够做类似说的事情(现在使用伪Swift语法,因为它无法解析)

x[[0,2,3]]

获得

的返回值
[1,3,4]

,但这在Swift中不直接起作用。有这样做的标准方法吗?我目前正在使用Swift4。

1 个答案:

答案 0 :(得分:0)

我不知道Swift Array类中内置的任何功能。

一种可能的解决方案是定义Array的扩展名,该扩展名过滤数组以仅包括提供的索引处的元素。

extension Array {
    func elements(at indices: [Int]) -> Array<Element> {
        return self.enumerated().filter { indices.contains($0.0) }.map { $0.1 }
    }
}

用法示例:

let x = [1,2,3,4,5]
let res = x.elements(at: [0,2,3])
print(res)

输出:

  

[1、3、4]