Swift Anexa cada segundo elemento a Array

Tengo una matriz rápida "Monthdata" que quiero agregar cada segundo valor en mi matriz de meses.

var monthData = [] let months = ["Jul 12","Aug 12","Sep 12","Oct 12"] for month in months { self.monthData.append(month) } 

Entonces, básicamente, tengo el array mesData como:

 ["Aug 12","Oct 12"] 

Intente utilizar el operador de module (%)

 var monthData = Array<String>() let months = ["Jul 12","Aug 12","Sep 12","Oct 12"] var i : Int = 1 for month in months{ if(i%2 == 0){ monthData.append(month) } i = i + 1 } println(monthData) 

Salida:

[12 de agosto, 12 de octubre]

También puede usar el método de filter matriz rápida para get la matriz filtrada,

 monthData = months.filter{ (dataValue) in (find(months, dataValue)! % 2 != 0) } 

Hay una versión más compacta para filtrar una matriz por el índice del elemento.

Un ejemplo de cómo encontrar cada elemento Nth en una matriz (swift 2.0):

 let array = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] let n = 2 let filtenetworkingArray = array.enumerate().flatMap { $0.index % n == 0 ? $0.element : nil } // filtenetworkingArray = ["0", "2", "4", "6", "8"] 

Swift 3 (basado en la respuesta de @ maxkonovalov)

 let array = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"] let step = 2 let filtenetworking = array.enumerated().flatMap { $0.offset % step == 0 ? $0.element : nil } // filtenetworking: ["0", "2", "4", "6", "8"]