2015-04-04 93 views
0

我想将两个数组相互比较,并将不在另一个数组中的值追加到新数组中。现在的问题是,所有不等于另一个数组的值已经被追加,但我只想要追加另一个数组中的新值。快速比较两个数组,长度不同

我希望问题很清楚。对不起,如果这是一个非常模糊的问题。我试图清楚哈哈。 代码和输出打印以下:

// Iterate through all possible values 
for i in 0...messages.count-1{ 
    var match = false 

    for r in 0...self.messages.count-1{ 
     println("NIEUWE" + messages[i].getID() + "OUDE" + self.messages[r].getID()) 


     if(messages[i].getID().toInt() == self.messages[r].getID().toInt()){ 

      var match = true 

      println(match) 
      break 
     } 


    } 

    if (!match) { 
     newArray.append(messages[i]) 
     println(newArray) 
    } 
} 

输出:

NIEUWE170OUDE170 
NIEUWE170OUDE171 
true 
[PostDuif.Message] 
NIEUWE171OUDE170 
true 
[PostDuif.Message, PostDuif.Message] 
NIEUWE172OUDE170 
true 
+0

该数组已经在相同的顺序,只有一个是缺少一些元素?或者他们可能会完全不同的命令? – 2015-04-04 14:23:52

+0

数组的顺序是否重要?如果没有,将它们都转换为集合,你可以联合/相交它们。 – Tim 2015-04-04 14:35:40

+0

数组最终不按顺序排列。新阵列中的一个元素随机添加,并且需要附加到旧阵列的最后一个索引 – 2015-04-04 14:45:58

回答

2

此“我要两个阵列相互比较,并附加不属于其他阵列中的一个新的值阵列”只是 '设置差'

var s1 = Set(["a", "b", "c"]) // this to be similar to your need 
var s2 = Set(["b", "c", "d"])  
var s3 = s2.subtract (s1) 

这样:

9> var s3 = s2.subtract(s1) 
s3: Set<String> = { 
    [0] = "d" 
} 

请注意,您有subtract,intersectunion以及inPlace选项作为Set类型的方法。新的Swift 1.2。

+0

我会试试这个!将发布结果,谢谢 – 2015-04-04 14:47:31

+1

行,它的工作!非常感谢你的帮助。现在可以进一步与我的项目:) – 2015-04-12 12:23:15

+0

这不起作用,因为我有两个数组包含字符串和结果存储在第三个数组也是类型字符串 – 2015-09-03 06:55:04