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

Posted

技术标签:

【中文标题】Swift 3 从一个数组中删除另一个数组中不存在的对象并保持顺序【英文标题】:Swift 3 Remove objects from an array that are not present in another array and maintaining order 【发布时间】:2017-08-04 07:43:59 【问题描述】:

Array1 = [华盛顿、富兰克林、佛罗里达、阿拉斯加、加利福尼亚、乔治亚]

Array2 = [加利福尼亚、华盛顿、乔治亚]

我想得到

Array1 = [华盛顿,加利福尼亚,乔治亚]

【问题讨论】:

【参考方案1】:
var array1 = ["Washington", "Franklin", "Florida", "Alaska", "California", "Georgia"]
var array2 = ["California", "Washington", "Georgia"]

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

filterArray 是你想要的

【讨论】:

【参考方案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】:

试试这个

let filteredArray = array1.filter(Array2.contains($0))

【讨论】:

【参考方案4】:

如果您只想检索常用元素而不是使用:

在 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

【讨论】:

以上是关于Swift 3 从一个数组中删除另一个数组中不存在的对象并保持顺序的主要内容,如果未能解决你的问题,请参考以下文章

如何检查另一个数组中不存在数组值

如何从 iOS 的另一个 nsarray 中不存在的核心数据中删除对象?

找出另一个数组列表中不存在的数组列表的元素

如果数组存在于另一个多维数组中,如何从多维数组中删除该数组? [复制]

Swift 3 数组 - 在其他数组的帮助下删除多个元素

在 SpriteKit/Swift 中从数组中删除元素