Swift 3从数组中删除不存在于另一个数组中并保持顺序的对象

时间:2017-08-04 07:43:59

标签: ios arrays swift3

Array1 = [Washington,Franklin,Florida,Alaska,California,Georgia]

Array2 = [加利福尼亚州,华盛顿州,佐治亚州]

我想要

Array1 = [华盛顿,加利福尼亚,格鲁吉亚]

4 个答案:

答案 0 :(得分:3)

var array1 = ["Washington", "Franklin", "Florida", "Alaska", "California", "Georgia"]
var array2 = ["California", "Washington", "Georgia"]

let filterArray = array1.filter {
    array2.contains($0)
}

filterArray是您想要的

答案 1 :(得分:2)

试试这个

rhs

答案 2 :(得分:2)

您可以使用过滤器来实现所需的输出

使用过滤器:

let array1 = ["Washington", "Franklin", "Florida", "Alaska", "California", "Georgia"]
let array2 = ["California", "Washington", "Georgia"]

let aryCommonElements = array1.filter { array2.contains($0)}

<强>输出:

["Washington", "California", "Georgia"]

希望这会对你有所帮助:)。

答案 3 :(得分:1)

如果您只想检索除使用之外的常用元素:

在Swift 3中

let Array1 = ["Washington", "Franklin", "Florida", "Alaska", "California", "Georgia"]

let Array2 = ["California", "Washington", "Georgia"]

let common = GetCommonElements(lhs: Array1, rhs: Array2)

print(common)

func GetCommonElements <T, U> (lhs: T, rhs: U) -> [T.Iterator.Element] where T: Sequence, U: Sequence, T.Iterator.Element: Equatable, T.Iterator.Element == U.Iterator.Element {
       var returnArray:[T.Iterator.Element] = []
       for lhsItem in lhs {
           for rhsItem in rhs {
               if lhsItem == rhsItem {
                  returnArray.append(lhsItem)
               }
           }
       }
       return returnArray
}