iOS开发 - 「Swift 学习」Array集合类型创建、编辑及常用方法汇总

Swift语言创建数组,合并、插入、删除数组元素

创建数组

一、创建空数组

//创建item类型为int的空数组
        var intsArr = [Int]()
        intsArr = [];
        print("intsArr is of type [Int] with \(intsArr.count) items.")
        //打印输出:intsArr is of type [Int] with 0 items.

二、创建数值型数组

直接用字面量创建数组类型,数组字面量是一系列由逗号分割并由方括号包含的数值:

//创建一个有3个double类型值的数组[0.0,.0.0,0.0]
        var threeDoubles1:[Double] = [0.0,0.0,0.0]
        var threeDoubles2 = Array(repeating: 0.0, count: 3)
        print("threeDoubles1 = \(threeDoubles1)\n threeDoubles2 = \(threeDoubles2)")
        //打印输出:
        /*
        threeDoubles1 = [0.0, 0.0, 0.0]
        threeDoubles2 = [0.0, 0.0, 0.0]
        */

//直接用字面量创建数组类型
        var goodsListArr:[String] = ["onions","eggs","apple","orange","pear","salt"]
        
        //判断数组是否为空
        if goodsListArr.isEmpty {
            print("The shopping list is empty.")
        }else {
            print("The shopping list is not empty.")
        }
        //打印输出:
        //The shopping list is not empty.

数组编辑

一、数组合并

可以使用加法操作符(+)来组合两种已存在的相同类型数组新数组的数据类型会被从两个数组的数据类型中推断出来

//数组合并
        threeDoubles1 += threeDoubles1
        print("数组合并结果:\(threeDoubles1)")
        //打印输出:
        //数组合并结果:[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
        
        let anotherThreeDoubles = Array(repeating: 2.5, count: 3)
        let sixDoubles = threeDoubles2 + anotherThreeDoubles;//数组合并
        print("合并结果:\(sixDoubles)")
        //打印输出:
        //合并结果:[0.0, 0.0, 0.0, 2.5, 2.5, 2.5]

二、替换数组索引值

数组索引

如果我们试着对索引越界的数组进行检索或者设置新值的操作,会引发一个运行期错误。我们可以使用索引值和数组的count属性进行比较来在使用某个索引之前先检验是否有效。除了当count等于 0 时(说明这是个空数组),最大索引值一直是count - 1,因为数组都是零起索引

//数组索引
        let arrFirstItem = goodsListArr[0]//根据索引 取对应的索引值
        print("firstItemValue:\(arrFirstItem)")
        //打印输出: firstItemValue:onions

替换索引值

//替换数组索引值
        goodsListArr[0] = "eight onions"//将第一个索引值替换掉
        // 其中的第一项现在是 "Six onions" 而不是 "onions"
        
        print("Replace the former results:\(goodsListArr)")
        //替换后的结果:
        //Replace the former results:["eight onions", "eggs", "apple", "orange", "pear", "salt"]

替换某个范围的索引值

//将某个范围的值替换掉
        //将2、3、4索引上的3个值("apple", "orange", "pear") 替换 成("Bananas", "Apples")
        goodsListArr[2...4] = ["Bananas", "Apples"]
        print("results of substitution:\(goodsListArr)")
        //替换后的结果:
        //results of substitution:["eight onions", "eggs", "Bananas", "Apples", "salt"]

三、数组插入元素

 //在数组的末尾添加一个元素(不可以用下标访问的形式去在数组尾部添加新项)
        goodsListArr.append("vinegar")
        //给数组添加多个元素(从尾部添加)
        goodsListArr += ["Chocolate Spread", "Cheese", "Butter"]
        
 //在数组中插入元素,调用数组的insert(<#T##newElement: String##String#>, at: <#T##Int#>)方法来在某个具体索引值之前添加数据项
        goodsListArr.insert("books", at: 0)//在0索引之前添加数据,现在数组第一个元素是“books”

四、删除数组元素

根据索引删除

//根据索引移除数组中某一个元素
        let removeItem = goodsListArr.remove(at: 0)//将数组的第一个元素移除并获取被移除的第一项元素
        print("removed index 0 item is:\(removeItem)  After removing the results:\(goodsListArr)")
        //打印输出:
        //removed index 0 item is:books  After removing the results:["eight onions", "eggs", "Bananas", "Apples", "salt", "vinegar", "Chocolate Spread", "Cheese", "Butter"]

删除第一个元素值

//将数组的第一个元素移除并获取被移除的第一个元素值
        let removeFirstItem = goodsListArr.removeFirst()
        print("removed first item is:\(removeFirstItem) After removing the results:\(goodsListArr)")
        //打印输出:
        //removed first item is:eight onions After removing the results:["eggs", "Bananas", "Apples", "salt", "vinegar", "Chocolate Spread", "Cheese", "Butter"]

删除最后一个元素值

//将数组的最后一个元素移除并获取被移除的最后一个元素值
        let removeLastItem = goodsListArr.removeLast()
        print("removed last item is:\(removeLastItem) After removing the results:\(goodsListArr)")
        //打印输出:
        //removed last item is:Butter After removing the results:["eggs", "Bananas", "Apples", "salt", "vinegar", "Chocolate Spread", "Cheese"]

\color{#f15a22}{以上的示例代码是关联在一起的,输出效果需要将以上代码关联输出}

\color{#F32E2E}{【常用方法汇总】}

数组声明为可变时,才能使用增,删,改等方法,常量数组不能进行修改相关操作

var array = [1, 2, 3, 4, 5, 6, 7, 8]
print(array.count) // 8

// 判断数组是空数组
if array.isEmpty {
    print("array is empty")
} else {
    print("array is not empty")
}

// 通过下标访问元素
var ele = array[1] // 2

// 截取新数组
var subArray = array[1...2] // [2, 3]

// 获取第一个元素
var firstEle = array.first // 1

// 获取最后一个元素
var lastEle = array.last // 8

// 修改下标对应的元素
array[1] = 22
array // [1, 22, 3, 4, 5, 6, 7, 8]
// 修改指定范围的元素
array[0...2] = [1, 2, 3] // [1, 2, 3]
// 追加单个元素
array.append(9) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
// 追加一组元素
array.append(contentsOf: [10, 11, 12]) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

// 在指定位置插入单个元素
array.insert(0, at: 0) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
// 在指定位置插入一组元素
array.insert(contentsOf: [-3, -2, -1], at: 0) // [-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

// 替换指定范围的元素
array.replaceSubrange(0...3, with: [1, 2, 3, 4]) // [1, 2, 3, 4]

// 移除指定元素
array.remove(at: 1) // -2
// 移除一组元素
array.removeSubrange(0...2) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
// 移除首个元素
array.removeFirst() // 1
// 移除末尾元素
array.removeLast() // 12
// 移除前几个元素
array.removeFirst(3) // [5, 6, 7, 8, 9, 10, 11]
// 移除后几个元素
array.removeLast(3) // [5, 6, 7, 8]



// 判断包含指定元素
if array.contains(3) {
    print("array contains 3")
}

// 移除所有元素
array.removeAll() // []


var sortArr = [2, 1, 3, -1]
// 从大到小排序
sortArr.sorted(by: >) // [3, 2, 1, -1]
// 从小到大排序
sortArr.sorted(by: <) // [-1, 1, 2, 3]

// 获取数组最小值
sortArr.max() // 3
// 获取数组最大值
sortArr.min() // -1


\color{gray}{欢迎大佬儿来指正纠错,共同学习😏!!}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容