从swift数组中删除每个第n个元素

use*_*373 5 arrays swift

有没有一种简单的方法可以从快速数组中删除每个第n个元素。例如,在下面的数组中:

thisArray = [2.0, 4.0, 3.0, 1.0, 4.5, 3.3, 1.2, 3.6, 10.3, 4.4, 2.0, 13.0]
Run Code Online (Sandbox Code Playgroud)

如果n = 3和从第一个元素开始计数想返回:

returnThis = [2.0, 4.0, 1.0, 4.5, 1.2, 3.6, 4.4, 2.0]
Run Code Online (Sandbox Code Playgroud)

ken*_*ytm 6

// swift 4.1:
thisArray.enumerated().compactMap { index, element in index % 3 == 2 ? nil : element }
Run Code Online (Sandbox Code Playgroud)
  • 使用.enumerated()附加指标
  • 然后使用.compactMap来通过返回来过滤索引2、5、8,...处的项目nil,并通过返回just 来除去其余部分的索引element

(如果您使用的是Swift 4.0或更低版本,请使用.flatMap代替.compactMap。该.compactMap方法由SE-0187在Swift 4.1中引入)

(如果您坚持使用Swift 2,请使用.enumerate()代替.enumerated()。)