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 中不存在的核心数据中删除对象?