2015-07-22 46 views
4

我有一個快速數組「Monthdata」,我想在每個月數組中追加每個第二個值。Swift將每第二個項目追加到數組

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

嘗試使用模運算符(%)

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) 

輸出:

[ 8月12日,10月12日]

3

您還可以使用迅速陣列filter方法來獲取過濾陣列,

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

有一個更緊湊的版本,以濾除元素的索引的數組。

如何在一個數組(SWIFT 2.0)找到每第N個元件的一個例子:

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

夫特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"] 
相關問題