简体   繁体   English

比较两个不同数组中的值

[英]Compare the values in two different arrays

I am trying to compare the values of two arrays in Swift.我正在尝试比较 Swift 中两个数组的值。 If a value of array2 is not found in array1 all the array2 found values need to be list and deleted.如果值array2中没有找到array1所有的array2中找到的值必须是列表中删除。

I was trying to use the code below but its not working anymore in Swift 2:我试图使用下面的代码,但它在 Swift 2 中不再工作了:

let array1 = [["aaa","12"],["bbb","349"],["ccc","91"],["ddd","143"]]
let array2 = ["aaa","SSS","bbb","ccc","QQQ","ZZZ","ddd"]

let notNeededValues = filter(enumerate(zip(array1,array2))) { $1.0 == $1.1 }.map{ $0.0 }

print(notNeededValues)

Not sure if I understand your problem correctly, but the problem seems to be, that your code needs a simple conversion to Swift 2 syntax:不确定我是否正确理解您的问题,但问题似乎是,您的代码需要简单地转换为 Swift 2 语法:

let array1 = [["aaa","12"],["bbb","349"],["ccc","91"],["ddd","143"]]
let array2 = ["aaa","SSS","bbb","ccc","QQQ","ZZZ","ddd"]

let notNeededValues = zip(array1, array2).enumerate().filter { $1.0 == $1.1 }.map { $0.0 }

print(notNeededValues)

Swift is moving away from globally defined functions, like filter and enumerate once were, and is using dot-syntax instead. Swift 正在远离全局定义的函数,比如曾经的filterenumerate ,而是使用点语法。 This change was made possible by protocol extensions, and makes code more readable.协议扩展使此更改成为可能,并使代码更具可读性。


Update:更新:

I assume this is what you mean(?):我想这就是你的意思(?):

let notNeededValues = array2.filter { !array1.map { $0[0] }.contains($0) }

// or like this:
let array1FirstElements = array1.map { $0[0] }
let notNeededValues = array2.filter { !array1FirstElements.contains($0) }

How about this:这个怎么样:

let array1 = [["aaa","12"],["bbb","349"],["ccc","91"],["ddd","143"]]
let array2 = ["aaa","SSS","bbb","ccc","QQQ","ZZZ","ddd"]

extension Array where Element: Equatable {
    func removeObject(object: Element) -> [Element] {
        return filter {$0 != object}
    }
}

var filteredArray2 = array2.reduce(array2) {
    if array1.flatMap({$0}).contains($1) {
        return $0.removeObject($1)
    }
    return $0
}

print(filteredArray2)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM