2015-07-22 3 views
4

У меня есть быстрый массив «Monthdata», который я хочу добавить каждое второе значение в моем массиве месяцев.Swift Добавить каждый второй элемент в Array

var monthData = [] 
let months = ["Jul 12","Aug 12","Sep 12","Oct 12"] 

for month in months { 
self.monthData.append(month) 
} 

Поэтому в основном я массив monthData выглядеть следующим образом:

["Aug 12","Oct 12"] 

ответ

4

Try использовать по модулю оператора (%)

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) 

Выход:

[ 12 августа, 12 октября]

3

Вы также можете использовать быстрый метод массива filter, чтобы получить отфильтрованный массив,

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

Там это более компактная версия для фильтрации массива по индексу элемента.

Пример того, как найти каждый Nth элемент в массиве (скор 2.0):

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

// filteredArray = ["0", "2", "4", "6", "8"] 
1

Swift 3 (основано на @ maxkonovalov Ответим)

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

// filtered: ["0", "2", "4", "6", "8"] 
Смежные вопросы