Swift 數(shù)組1: 增刪改查

1. 數(shù)組聲明
// 系統(tǒng)識(shí)別結(jié)果為 array 是一個(gè)元素是Int類型的數(shù)組
let array = [0, 1, 2, 3, 4, 5, 6, 7, 8]
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8]

// 系統(tǒng)識(shí)別為array 是一個(gè)元素是字符串類型的數(shù)組, 默認(rèn)是空數(shù)組
var array: [String] = []

// 系統(tǒng)識(shí)別為array 是一個(gè)元素是字符串類型的可選數(shù)組
var array: [String]?

// 系統(tǒng)識(shí)別為array 是一個(gè)元素是字符串類型的可選數(shù)組, 默認(rèn)是nil
var array: [String]? = nil
2. index: 獲取下標(biāo)
// 從下標(biāo)2開(kāi)始 往后第3個(gè)元素
// 返回對(duì)應(yīng)的下標(biāo)
let mm = array.index(2, offsetBy: 3)

// limitedBy: 從下標(biāo)0-下標(biāo)3范圍內(nèi)查找 從下標(biāo)1開(kāi)始, 往后第2個(gè)元素
// 返回對(duì)應(yīng)下標(biāo), 是一個(gè)可選值
let kk = array.index(1, offsetBy: 2, limitedBy: 3)

// 找出元素3 在數(shù)組中第一次出現(xiàn)的下標(biāo), 返回可選的下標(biāo)值
let index = array.firstIndex(of: 3)
// 找出元素3 在數(shù)組中最后一次出現(xiàn)的下標(biāo), 返回可選的下標(biāo)值
let index = array.lastIndex(of: 3)
3. append: 添加元素
// 添加一個(gè)元素, 返回新數(shù)組
let newArray = array.append(9)
// 添加多個(gè)元素, 返回新數(shù)組
let newArray = array.append(contentsOf: [20, 21])
3.1 insert: 插入元素, 改變?cè)瓟?shù)組, 無(wú)返回值
// 給下標(biāo)n位置插入一個(gè)元素, n不能越界
array.insert(100, at: 3)

// 給下標(biāo)n位置插入多個(gè)元素, n不能越界
array.insert(contentsOf: [100, 200], at: 3)
4. remove: 刪除元素, 改變?cè)瓟?shù)組, 無(wú)返回值
if let range = Range(NSRange(location: 0, length: 4)) {
     // 刪除指定范圍的元素
     // Range必須解包, 需要注意數(shù)組越界crash
    array.removeSubrange(range)
}
// 刪除所有元素
array.removeAll()
// 刪除所有元素, 保持?jǐn)?shù)組的容量不變
array.removeAll(keepingCapacity: true)
// 刪除元素值為 3 的元素
array.removeAll { (item) -> Bool in
   item == 3
}
// 刪除下標(biāo)為3的元素
array.remove(at: 3)
// 刪除最后一個(gè)元素
array.removeLast()
// 刪除第一個(gè)元素
array.removeFirst()
// 逆向刪除3個(gè)元素
array.removeLast(3)
// 正向刪除3個(gè)元素
array.removeFirst(3)
5. drop: 丟棄元素, 返回新數(shù)組
// 丟棄數(shù)組第一個(gè)元素, 返回值是新數(shù)組
let newArray = array.dropFirst()

// 丟棄數(shù)組最后一個(gè)元素, 返回值是新數(shù)組
let newArray = array.dropLast()

// 逆向丟棄數(shù)組5個(gè)元素, 返回值是新數(shù)組
let newArray = array.dropLast(5)
        
// 正向丟棄數(shù)組5個(gè)元素, 返回值是新數(shù)組
let newArray = array.dropFirst(5)

// 丟棄符合條件的元素
// 注意 閉包內(nèi)如果返回了false 則不會(huì)繼續(xù)執(zhí)行, 按需使用
// 你可以試試將 item != 3 改為 item == 3
var array = [0, 1, 2, 3, 4, 5, 6, 7, 8]
let newArray = array.drop { (item) -> Bool in
    print("item = \(item)")
    return item != 3
}

print("newArray = \(newArray)")
// log結(jié)果: 
// item = 0
// item = 1
// item = 2
// item = 3
// newArray = [3, 4, 5, 6, 7, 8]
6. prefix: 正向獲取前n個(gè)元素, 返回新數(shù)組
// 取前n個(gè)元素 返回新數(shù)組, n可以越界, 越界后返回完整數(shù)組
let newArray = array.prefix(3)

// 取下標(biāo)n之前的元素, 不包含第n個(gè)元素 n不能越界
let newArray = array.prefix(upTo: 3)

// 取下標(biāo)n之前的元素, 包含第n個(gè)元素 n不能越界
let newArray = array.prefix(through: 3)

// 正向遍歷 不符合條件立即終止程序
let newArray = array.prefix { (item) -> Bool in
    return item != 4
}
7. suffix: 取后n個(gè)元素,非逆序, 返回新數(shù)組
// 取后n個(gè)元素 返回新數(shù)組,n可以越界, 越界后返回完整數(shù)組
let newArray = array.suffix(3)

// 取下標(biāo)為n的元素之后的所有元素, n不可以越界
let newArray = array.suffix(from: 3)
8. replace: 用新數(shù)組替換指定范圍內(nèi)的元素
if let range = Range(NSRange(location: 0, length: 3)) {
     array.replaceSubrange(range, with: [20, 30, 40])
}
9. first: 查第一個(gè)元素
// 獲取數(shù)組第一個(gè)元素, 返回可選值, 不存在第一個(gè)元素則返回nil
let element = array.first

// 獲取符合條件后的第一個(gè)元素, 返回可選值, 不存在則返回nil
let element = array.first { (item) -> Bool in
      return item > 4
}
// 獲取符合條件后的第一個(gè)元素
// 另一種簡(jiǎn)潔寫(xiě)法        
let element = array.first{ $0 > 4 }
10. last: 查最后一個(gè)元素
// 獲取數(shù)組最后一個(gè)元素, 返回可選值, 不存在則返回nil
let element = array.last
11. 普通查找
// 查找下標(biāo)為4的元素, 返回?cái)?shù)組元素, 注意不能越界
let element = array[4]
12. 修改指定元素
// 將下標(biāo)為4 的元素值修改為100, 注意不能越界
array[4] = 100
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子抖拴,更是在濱河造成了極大的恐慌获雕,老刑警劉巖富雅,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒲犬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡势告,警方通過(guò)查閱死者的電腦和手機(jī)蛇捌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)咱台,“玉大人豁陆,你說(shuō)我怎么就攤上這事〕郴ぃ” “怎么了盒音?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵表鳍,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我祥诽,道長(zhǎng)譬圣,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任雄坪,我火速辦了婚禮厘熟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘维哈。我一直安慰自己绳姨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布阔挠。 她就那樣靜靜地躺著飘庄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪购撼。 梳的紋絲不亂的頭發(fā)上跪削,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音迂求,去河邊找鬼碾盐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛揩局,可吹牛的內(nèi)容都是我干的毫玖。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼凌盯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼付枫!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起十气,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎春霍,沒(méi)想到半個(gè)月后砸西,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡址儒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年芹枷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莲趣。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鸳慈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喧伞,到底是詐尸還是另有隱情走芋,我是刑警寧澤绩郎,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站翁逞,受9級(jí)特大地震影響肋杖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜挖函,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一状植、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怨喘,春花似錦津畸、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至棚赔,卻和暖如春帝簇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背靠益。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工丧肴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胧后。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓芋浮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親壳快。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纸巷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容