我有以下数组:
var cardsInHand = [1,2,3]
我希望能够拥有两个cardsInHand
和cardsOnTable
数组。 cardsOnTable
只能来自cardsInHand
。例如,如果我玩卡1,则cardsInHand
将为[2,3]
,而cardsOnTable将为[1]
。我可以使用过滤器完成此操作,但从cardsInHand
中删除的值将丢失。反之亦然,如果我卡1备份,那么cardsInHand
将是[1,2,3]
而cardsOnTable
将是[]
let cardsPlayed = 1
cardsInHand = cardsInHand.filter { $0 != cardsPlayed }
print(cardsInHand)
[2,3]
如何才能cardsOnTable
与cardsPlayed
之间的区别{?{1}}?
很抱歉,如果标题有误导性,但我不确定如何描述它。我觉得map,reduce或filter可能是解决这个问题的最简单方法。
答案 0 :(得分:1)
您可以使用remove(at:)
func来实现您的目标,例如
let cardsPlayed = 1
if let index = cardsInHand.index(of: cardsPlayed)
{
cardsOnTable += [cardsInHand.remove(at: index)]
}
如果有多张牌被删除,就像你在评论中提到的那样,你可以直接将它们存储到数组cardsOntable
中并像这样使用
cardsOnTable += [1,2]
cardsInHand = cardsInHand.filter{!self.cardsOnTable.contains($0)}