在日常开发中,我们有时需要从一个指定数组中抽取随机元素(或者说样本元素)。比如从一个文章列表数组中随机展示一篇文章,又或是从一个颜色数组中随机获取几个颜色......下面通过样例演示如何实现这个功能。
1,扩展 Array
为了方便使用,我们首先对数组(Array)进行扩展(Array+.swift),增加如下两个属性和方法:
sample:从当前数组中返回一个随机元素
sample(size, noRepeat):从当前数组中从返回指定个数的随机元素
import Foundation
extension Array {
/// 从数组中返回一个随机元素
public var sample: Element? {
//如果数组为空,则返回nil
guard count > 0 else { return nil }
let randomIndex = Int(arc4random_uniform(UInt32(count)))
return self[randomIndex]
}
/// 从数组中从返回指定个数的元素
///
/// - Parameters:
/// - size: 希望返回的元素个数
/// - noRepeat: 返回的元素是否不可以重复(默认为false,可以重复)
public func sample(size: Int, noRepeat: Bool = false) -> [Element]? {
//如果数组为空,则返回nil
guard !isEmpty e