当前位置:
首页
文章
前端
详情

Swift数组处理全解(一篇全部搞定)

  1. 定义数组:使用语法 [元素类型] 来定义数组,例如:

var arr1 = [1, 2, 3]
var arr2: [String] = ["apple", "banana", "pear"]

  1. 访问数组元素:可以使用下标(从 0 开始)或者循环遍历数组来访问其中的元素。

let arr = ["apple", "banana", "pear"]
let first = arr[0] // "apple"
print(first)

for item in arr {
    print(item)
}

  1. 操作数组元素:可以使用 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]

  1. 数组切片:可以使用数组的 suffix、prefix、dropdropLast 等方法获取其子数组。

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]

  1. 数组排序:可以使用 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"]

  1. 数组过滤和映射:可以使用 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]

列举几个常用的方法:

  1. 添加元素到数组:

var array = [1, 2, 3]
array.append(4) // [1, 2, 3, 4]
array += [5] // [1, 2, 3, 4, 5]

  1. 获取数组元素个数:

let count = array.count // 5

  1. 数组元素的遍历:

for item in array {
    print(item)
}

array.forEach({ item in 
    print(item)
})

  1. 获取数组中最大值、最小值、和:

let maxNum = array.max() // 5
let minNum = array.min() // 1
let sum = array.reduce(0, +) // 15

  1. 数组是否包含某个元素:

let contains = array.contains(2) // true

  1. 对数组进行排序:

let sortedArray = array.sorted() // [1, 2, 3, 4, 5]

  1. 筛选数组元素:

let filteredArray = array.filter({ $0 % 2 == 0 }) // [2, 4]

  1. 数组的删除和替换:

var array = [1, 2, 3, 4, 5]
array.remove(at: 2) // [1, 2, 4, 5]
array[2] = 6 // [1, 2, 6, 5]

  1. 数组的插入和拼接:

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]

  1. 数组的截取:

let subArray = array[1...3] // [2, 6, 3]

  1. 数组的判断输出:

let isEmpty = array.isEmpty // false
print(array) // [1, 2, 6, 3, 4, 5]

  1. 在数组中查找元素的位置:

if let index = array.firstIndex(of: 2) {
    // 找到2,index为1
    print("找到2,index为\(index)")
} else {
    // 没有找到2
    print("没有找到2")
}

  1. 使用 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"]

  1. 使用 reduce 方法计算数组中所有元素的总和:

let nums = [1, 2, 3, 4, 5]
let sum = nums.reduce(0, { $0 + $1 })
print(sum) // 15

  1. 使用 filter 方法过滤出数组中的偶数:

let nums = [1, 2, 3, 4, 5]
let evens = nums.filter({ $0 % 2 == 0 })
print(evens) // [2, 4]

  1. 使用 forEach 方法遍历数组中的每一个元素:

let nums = [1, 2, 3, 4, 5]
nums.forEach({ print($0) })
// 1
// 2
// 3
// 4
// 5

  1. 移除数组中的重复元素:

var nums = [1, 2, 3, 2, 4, 3, 5]
nums = Array(Set(nums))
print(nums) // [1, 2, 3, 4, 5]

  1. 在数组中搜索符合条件的元素:

let nums = [1, 2, 3, 4, 5]
let results = nums.enumerated().filter { $0.offset % 2 == 0 && $0.element > 2 }
print(results) // [(2, 3)]

  1. 使用 compactMap 方法转换数组中的元素,同时过滤掉 nil:

let mixed = ["1", "2", "3", "cat"]
let nums = mixed.compactMap({ Int($0) })
print(nums) // [1, 2, 3]

  1. 对数组进行降序排序:

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]

  1. 通过 dropFirst() 方法删除数组的前 n 个元素:

let nums = [1, 2, 3, 4, 5]
let tail = nums.dropFirst(2)
print(tail) // [3, 4, 5]

  1. 通过 dropLast() 方法删除数组的后 n 个元素:

let nums = [1, 2, 3, 4, 5]
let head = nums.dropLast(2)
print(head) // [1, 2, 3]

  1. 使用 popLast() 方法弹出数组的最后一个元素:

var nums = [1, 2, 3, 4, 5]
let last = nums.popLast()
print(last) // 5
print(nums) // [1, 2, 3, 4]

  1. 在数组的指定位置插入单个或多个元素:

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]

  1. 先通过 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 处理数组的一些方法,对于遇到的具体问题和场景,可以结合实际需要选择合适的方法。

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。