Swift数组处置惩罚全解(一篇全部搞定)

源码 2024-9-23 13:52:41 34 0 来自 中国

  • 界说数组:使用语法 [元素范例] 来界说数组,比方:
var arr1 = [1, 2, 3]var arr2: [String] = ["apple", "banana", "pear"]

  • 访问数组元素:可以使用下标(从 0 开始)大概循环遍历数组来访问此中的元素。
let arr = ["apple", "banana", "pear"]let first = arr[0] // "apple"print(first)for item in arr {    print(item)}

  • 利用数组元素:可以使用 append、insert、remove 等方法来利用数组元素。
var arr = [1, 2, 3]arr.append(4) // [1, 2, 3, 4]arr.insert(0, at: 0) // [0, 1, 2, 3, 4]arr.remove(at: 2) // [0, 1, 3, 4]

  • 数组切片:可以使用数组的 suffix、prefix、drop 及 dropLast 等方法获取其子数组。
let arr = [1, 2, 3, 4, 5]let subset1 = arr.suffix(3) // [3, 4, 5]let subset2 = arr.prefix(2) // [1, 2]let subset3 = arr.dropFirst(2) // [3, 4, 5]let subset4 = arr.dropLast(1) // [1, 2, 3, 4]

  • 数组排序:可以使用 sort、sorted、sort(by 等方法对数组举行排序。
var arr = [4, 2, 1, 3, 5]arr.sort() // [1, 2, 3, 4, 5]var arr2 = [4, 2, 1, 3, 5]let sortedArr = arr2.sorted() // [1, 2, 3, 4, 5]var arr3 = ["apple", "banana", "pear"]arr3.sort(by: { $0.compare($1) == .orderedAscending })print(arr3) // ["apple", "banana", "pear"]

  • 数组过滤和映射:可以使用 filter、map 等方法对数组举行过滤和映射。
let arr = [1, 2, 3, 4, 5]let filteredArr = arr.filter { $0 % 2 == 0 } // [2, 4]let mappedArr = arr.map { $0 * $0 } // [1, 4, 9, 16, 25]枚举几个常用的方法:


  • 添加元素到数组:
var array = [1, 2, 3]array.append(4) // [1, 2, 3, 4]array += [5] // [1, 2, 3, 4, 5]

  • 获取数组元素个数:
let count = array.count // 5

  • 数组元素的遍历:
for item in array {    print(item)}array.forEach({ item in     print(item)})

  • 获取数组中最大值、最小值、和:
let maxNum = array.max() // 5let minNum = array.min() // 1let sum = array.reduce(0, +) // 15

  • 数组是否包罗某个元素:
let contains = array.contains(2) // true

  • 对数组举行排序:
let sortedArray = array.sorted() // [1, 2, 3, 4, 5]

  • 筛选数组元素:
let filteredArray = array.filter({ $0 % 2 == 0 }) // [2, 4]

  • 数组的删除和更换:
var array = [1, 2, 3, 4, 5]array.remove(at: 2) // [1, 2, 4, 5]array[2] = 6 // [1, 2, 6, 5]

  • 数组的插入和拼接:
var array = [1, 2, 3, 4, 5]array.insert(6, at: 2) // [1, 2, 6, 3, 4, 5]let newArray = array + [7, 8] // [1, 2, 6, 3, 4, 5, 7, 8]

  • 数组的截取:
let subArray = array[1...3] // [2, 6, 3]

  • 数组的判定输出:
let isEmpty = array.isEmpty // falseprint(array) // [1, 2, 6, 3, 4, 5]

  • 在数组中查找元素的位置:
if let index = array.firstIndex(of: 2) {    // 找到2,index为1    print("找到2,index为\(index)")} else {    // 没有找到2    print("没有找到2")}

  • 使用 map 方法对数组中的元素举行转换:
let nums = [1, 2, 3, 4, 5]let strs = nums.map({ "Number: \($0)" })print(strs) // ["Number: 1", "Number: 2", "Number: 3", "Number: 4", "Number: 5"]

  • 使用 reduce 方法盘算数组中全部元素的总和:
let nums = [1, 2, 3, 4, 5]let sum = nums.reduce(0, { $0 + $1 })print(sum) // 15

  • 使用 filter 方法过滤出数组中的偶数:
let nums = [1, 2, 3, 4, 5]let evens = nums.filter({ $0 % 2 == 0 })print(evens) // [2, 4]

  • 使用 forEach 方法遍历数组中的每一个元素:
let nums = [1, 2, 3, 4, 5]nums.forEach({ print($0) })// 1// 2// 3// 4// 5

  • 移除数组中的重复元素:
var nums = [1, 2, 3, 2, 4, 3, 5]nums = Array(Set(nums))print(nums) // [1, 2, 3, 4, 5]

  • 在数组中搜索符合条件的元素:
let nums = [1, 2, 3, 4, 5]let results = nums.enumerated().filter { $0.offset % 2 == 0 && $0.element > 2 }print(results) // [(2, 3)]

  • 使用 compactMap 方法转换数组中的元素,同时过滤掉 nil:
let mixed = ["1", "2", "3", "cat"]let nums = mixed.compactMap({ Int($0) })print(nums) // [1, 2, 3]

  • 对数组举行降序排序:
let nums = [1, 9, 2, 8, 3, 7, 4, 6, 5]let sortedNums = nums.sorted { $0 > $1 }print(sortedNums) // [9, 8, 7, 6, 5, 4, 3, 2, 1]

  • 通过 dropFirst() 方法删除数组的前 n 个元素:
let nums = [1, 2, 3, 4, 5]let tail = nums.dropFirst(2)print(tail) // [3, 4, 5]

  • 通过 dropLast() 方法删除数组的后 n 个元素:
let nums = [1, 2, 3, 4, 5]let head = nums.dropLast(2)print(head) // [1, 2, 3]

  • 使用 popLast() 方法弹出数组的末了一个元素:
var nums = [1, 2, 3, 4, 5]let last = nums.popLast()print(last) // 5print(nums) // [1, 2, 3, 4]

  • 在数组的指定位置插入单个或多个元素:
var nums = [1, 2, 3, 4, 5]nums.insert(0, at: 0)print(nums) // [0, 1, 2, 3, 4, 5]let spliceArray = [6, 7, 8]nums.splice(contentsOf: spliceArray, at: 3)// nums 现在为 [0, 1, 2, 6, 7, 8, 3, 4, 5]

  • 先通过 firstIndex(of 方法找到元素在数组中的位置,然后使用 remove(at 方法从数组中删除该元素:
var nums = [1, 2, 3, 4, 5]if let index = nums.firstIndex(of: 3) {    nums.remove(at: index)    print(nums) // [1, 2, 4, 5]}以上是 Swift 处置惩罚数组的一些方法,对于遇到的具体题目和场景,可以联合实际必要选择符合的方法。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 16:49, Processed in 0.147169 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表