如何随机化项目,然后从Swift数组中删除



我有一组水果。我正在随机获取一个水果(请参阅以下代码(。问:获取此果实后,如何将其从阵列中移除?

let fruits = ["apple", "orange", "banana", "pineapple", "lemon" ]
func getRandomFruit() -> String {
let randomFruit = fruits.randomElement()!
return randomFruit
}

就像一副牌一样。使用shuffle而不是randomElement,只删除最后一个元素。

var fruits = ["apple", "orange", "banana", "pineapple", "lemon" ]
fruits.shuffle()
let myfruit = fruits.popLast()

(根据需要继续这样做。如果你清空了列表,myfruit将是nil。(

无需对整个集合进行混洗即可移除元素。只需获得一个随机索引,返回该元素并推迟删除该元素:

func getRandomFruit() -> String? {
guard let index = fruits.indices.randomElement() else {
return nil
}
defer { fruits.remove(at: index) }
return fruits[index]
}

var fruits = ["apple", "orange", "banana", "pineapple", "lemon" ]

let fruit1 = getRandomFruit()   // apple
let fruit2 = getRandomFruit()   // lemon
let fruit3 = getRandomFruit()   // banana
let fruit4 = getRandomFruit()   // orange
let fruit5 = getRandomFruit()   // pineapple
let fruit6 = getRandomFruit()   // nil

最新更新