如何在 Swift 2.0 中實現(xiàn)從非零下標遍歷數(shù)組

作者:Erica Sadun,原文鏈接,原文日期:2015/09/01
譯者:小鐵匠Linus;校對:千葉知風;定稿:shanks

Mike T. 私信我,如何讓 for 循環(huán)從下標 i (比如 5 )開始,而不是從 0 開始。

Swift 2.0 提供了一種像 C 語言那樣的循環(huán),代碼如下:

for var index = 5; index < array.count; index++ {
  // do something with array[index]
}

也可以用區(qū)間運算符的方式實現(xiàn)相似的功能:

for index in 5..<array.count {
 // do something with array[index]
}

甚至可以用forEach這樣寫:

(5..<array.count).forEach {
    // do something with array[$0]
}

你也可以截取數(shù)組中你需要使用的部分進行遍歷,每次遍歷時可以獲取數(shù)組下標(本例中偏移量為 5,也可以看看另一篇講 slice enumeration 的文章)和對應的值。

for (index, value) in array[5..<array.count].enumerate() {
  // do something with (index + 5) and/or value
}

如果你想要更準確的計數(shù),而不必每次都加上偏移量 5 的話,可以使用zip,例子如下:

let range = 5..<array.count
for (index, value) in zip(range, array[range]) {        
    // use index, value here
}

也可以調整zip方法,將其應用在forEach里:

let range = 5..<array.count
zip(range, array[range]).forEach {
    index, value in
    // use index, value here
}

當然,你也可以使用map來處理子區(qū)間的值。不像forEach,map會在閉包里返回一個新的值。

let results = array[range].map({
    // transform $0 and return new value
})

如果你不想遍歷數(shù)組前 5 個元素,可以使用dropFirst()從剩余的元素開始遍歷。下面這個例子沒有使用下標,如果需要的話可以按前面提到的方法去獲取。

for value in array.dropFirst(5) {
    // use value here
}

使用removeFirst()可以返回數(shù)組片(slice)第一個元素,然后該元素會從數(shù)組片中刪除。接下來的代碼段結合了removeFirst()dropFirst(),首先去掉前5個元素,然后遍歷數(shù)組剩余的元素。

var slice = array.dropFirst(5)
while !slice.isEmpty {
    let value = slice.removeFirst()
    // use value here
}

另外也有很多方式可以遍歷數(shù)組,包括在需要的時候才去獲取數(shù)組切片的值(使用lazy進行延遲加載),但是以上提到的方法已經(jīng)基本夠用了。

感謝 Mike Ash,并且一定要去看看 Nate Cook 的解決方案。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Javascript有很多數(shù)組的方法,有的人有W3C的API,還可以去MDN上去找,但是我覺得API上說的不全,M...
    頑皮的雪狐七七閱讀 4,493評論 0 6
  • 由于最近都在freecodecamp上刷代碼,運用了很多JavaScript數(shù)組的方法,因此做了一份關于JavaS...
    2bc5f46e925b閱讀 2,176評論 0 16
  • 數(shù)組是值的有序集合。每個值叫做一個元素,而每個元素在數(shù)組中有一個位置,以數(shù)字表示,稱為索引。 JavaScript...
    劼哥stone閱讀 1,246評論 6 20
  • 小的時候我就覺得自己異于常人 他們在想什么我都知道 懷疑過自己的存在 但是除了這一點 好像我就是個普通人 這...
    墨跡1234閱讀 389評論 0 0
  • 這個故事是我聽來的。 男主人公姑且叫Y,85后,獨子,身高178,斯文帥氣,出生在一個不錯的家庭,父親是政府一個部...
    時光煮雨四月天閱讀 314評論 1 0

友情鏈接更多精彩內容