2015-04-04 88 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

相關問題