swift使用filter来获得两个数组之间的差异

时间:2017-12-13 22:47:11

标签: arrays swift filter

我有以下数组:

var cardsInHand = [1,2,3]

我希望能够拥有两个cardsInHandcardsOnTable数组。 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]

如何才能cardsOnTablecardsPlayed之间的区别{?{1}}?

很抱歉,如果标题有误导性,但我不确定如何描述它。我觉得map,reduce或filter可能是解决这个问题的最简单方法。

1 个答案:

答案 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)}