过滤两个数组Swift

时间:2016-02-28 07:59:57

标签: ios arrays swift filter

我有一个空数组和两个数据数组

    results = tk.Frame(self)
    f = Figure()
    ax0 = f.add_subplot(211)
    ax1 = f.add_subplot(212)
    self.canvas = FigureCanvasTkAgg(f, results)
    self.canvas.get_tk_widget().pack(expand=True, fill='both')

我的目标是在 ax0, ax1 = self.canvas.figure.get_axes() ax0.clear() ax0.plot(x, y) ax1.clear() ax1.plot(x, z) self.canvas.draw() 附加var resultsArray = [String]() var array1 = ["1","2","2","3","4"] var array2 = ["1","2","2","3","4","5","6"] 中与resultsArray不匹配的元素(示例中为“5”和“6”)。

最简单的方法是什么?

谢谢。

3 个答案:

答案 0 :(得分:18)

使用filter功能

var resultsArray = [String]()

let array1 = ["1","2","2","3","4"]
let array2 = ["1","2","2","3","4","5","6"]

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

resultsArray.appendContentsOf(filteredArray)

如果集合包含唯一项目,请考虑使用Set而不是Array

答案 1 :(得分:1)

var resultsArray: [String] = []

let arrayX = ["1","2","2","3","4"]
let arrayY = ["1","2","2","3","4","5","6","7"]

let setX = Set(arrayX), setY = Set(arrayY)

resultsArray.append(contentsOf: setY.subtracting(setX))

这个答案比使用过滤器更快。

答案 2 :(得分:0)

使用过滤器功能来查找两个数组中不同数量的元素

let Filter = array2.filter{!array1}
resultArray.appendContentsof(Filter)