Swift 数组的重排操作和拼接操作

数组的重排操作

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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值