如何比较两个数组的元素

PaF*_*aFi 8 arrays swift

我想比较两个数组的元素,并检查它们是否相等.我已经尝试了各种解决方案但没有真正有效.

我试过如何比较两个对象数组的解决方案

这是我的目标:

struct AccountBalance: Decodable {
    let balance: Double
    let currency: String

    init(balance: Double, currency: String ) {
        self.currency = currency
        self.balance = balance
    }

    enum CodingKeys: String, CodingKey {
        case currency = "Currency"
        case balance = "Balance"
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我试过的链接中的代码:

let result = zip(accountBalance, getsSaved).enumerate().filter() {
                $1.0 == $1.1
                }.map{$0.0}
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

Closure tuple parameter '(offset: Int, element: (AccountBalance, AccountBalance))' does not support destructuring with implicit parameters
Run Code Online (Sandbox Code Playgroud)

vad*_*ian 10

Array提供了一个elementsEqual能够比较两个数组而不明确符合的函数Equatable:

let result = accountBalance.elementsEqual(getsSaved) {
    $0.balance == $1.balance && $0.currency == $1.currency
}
Run Code Online (Sandbox Code Playgroud)

编辑:

如果要获得相等结果而不管数组中对象的顺序如何,那么您只需为每个数组添加排序.

let result = accountBalance.sorted { $0.balance < $1.balance }.elementsEqual(getsSaved.sorted { $0.balance < $1.balance }) {
    $0.balance == $1.balance && $0.currency == $1.currency
}
Run Code Online (Sandbox Code Playgroud)