数组的重排操作
1、数组元素的随机化,可以用于歌曲的随机操作
- shuffle() 在原数组上将数组元素打乱,只能作用在数组变量上
- shuffled() 返回原数组的随机化数组,可以作用在数组变量和常量上
var array = [Int](1...8)
array.shuffle() //只能作用在变量上
print(array.shuffle()) //输出: ()
print(array)
let array = [Int](1...8) //可以作用在数组常量上
let array2 = array.shuffled()
print(array)
print(array2)
2、数组的逆序
- reverse() 在原数组上将数组逆序,只能作用在数组变量上
- reversed() 返回原数组的逆序“集合表示”,可以作用在数组变量和常量上,该方法不 会分配新内存空间
var array = [Int](1...8) //只能作用在变量上
array.reverse() //在原数组上逆序
print(array) //输出: [8, 7, 6, 5, 4, 3, 2, 1]
print(array.reverse()) //输出: ()
var array = [Int](1...8)
let array2 = array.reversed() //在原数组上逆序
print(array) //输出: [1, 2, 3, 4, 5, 6, 7, 8]
print(array2) //输出: ReversedCollection<Array<Int>>(_base: [1, 2, 3, 4, 5, 6, 7, 8])
3、数组的排序
- sort() 在原数组上将元素排序,只能作用于数组变量
- sorted() 返回原数组的排序结果数组,可以作用在数组变量和常量上
//正序排序
var array = [10, 20, 45, 30, 98, 101, 30, 4]
array.sort()
print(array.sort()) //输出: ()
print(array) //输出: [4, 10, 20, 30, 30, 45, 98, 101]
var array = [10, 20, 45, 30, 98, 101, 30, 4]
let array2 = array.sorted()
print(array) //原数组没有任何改变
print(array2)
4、数组的分组
- partition(by belongsInSecondPartition: (Element) throws -> Bool) 将数组以某个 条件分组,数组前半部分都是不符合条件的元素,数组后半部分都是符合条件的元素
//数组的分组 partition:划开,分开,分割
var array = [10, 20, 45, 30, 98, 101, 30, 4]
let index = array.partition { $0 > 30 }
print(index) //输出: 5
let partition1 = array[..<index] //输出: [10, 20, 4, 30, 30]
let partition2 = array[index...] //输出: [101, 98, 45]
print(partition1)
print(partition2)
print(array) //原数组不变
5、交换数组两个元素
- swapAt(: ) 交换指定位置的两个元素
var array = [10, 20, 45, 30, 98, 101, 30, 4]
array.swapAt(array.startIndex, array.endIndex - 1) //交换数组的第一个元素和最后一个元素交换
print(array)
数组的拼接操作
1、字符串数组拼接
- joined() 拼接字符串数组里的所有元素为一个字符串
- joined(separator:) 以给定的分隔符拼接字符串数组里的所有元素为一个字符串
var array = ["hello", "world"]
//将数组转换成字符串
print(array.joined()) //输出: helloworld
print(array.joined(separator: ","))
2、元素为 Sequence 数组的拼接
- joined() 拼接数组里的所有元素为一个更大的 Sequence
- joined(separator:) 以给定的分隔符拼接数组里的所有元素为一个更大的 Sequence
var ranges = [0...3, 8...10, 15...17]
print(ranges.joined()) //输出的是 Int 类型的范围序列
for range in ranges.joined() {
print(range)
}
var numbers = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
let joined = numbers.joined(separator: [-1, -2])
print(Array(joined)) //输出: [1, 2, 3, -1, -2, 4, 5, 6, -1, -2, 7, 8, 9]