2017-08-17 115 views
1

數組的類型爲字符串。由於添加「」很費時,所以我寫它像Int。抱歉。比較兩個數組並找到SWIFT 3中非常見元素的索引

我有兩個陣列說var array1 = [[1,2,3,4,5,6,7,8,9]]

var array2 = [[1,2,3,4], 
       [2,3,4,5], 
       [2,4,5,6], 
       [1,2,3,4,5,6,7,8,9], 
       [1,2,3,4,5,6,7,8], 
       [2,3,4,5,6,7,8]] 

我必須的array2每個數組元素與array1比較,並插入「 - 」其中元素不匹配。與此類似,

var array2 = [[1,2,3,4,-,-,-,-,-], 
       [-,2,3,4,5,-,-,-,-], 
       [-,2,-,4,5,6,-,-,-], 
       [1,2,3,4,5,6,7,8,9], 
       [1,2,3,4,5,6,7,8,-], 
       [-,2,3,4,5,6,7,8,-]] 

我試圖遍歷數組2中每個陣列,並將其與數組1比較,比較的指標,並插入「 - 」索引位置,但我得到意想不到的效果。

UPDATE

for item in array2{ 
var elementsArray = item 
for i in stride(from: 0, to: elementsArray.count, by: 1) { 
    if elementsArray[i] != array1[i] 
    { 
     elementsArray.insert("-", at: i) 
    } 
    print("elemnt array.....", elementsArray, "\n\n") 
} 
} 

我曾認爲通過count與ARRAY1數組2的每個陣列比較,發現罕見元素的索引,然後插入「 - 」在該索引位置。這種方法是對的嗎?請幫我解決一下這個。

+0

'array1'應該是一維數組還是數組數組?在後一種情況下,應將「array1」的第i個子陣列與「array2」的第i個子陣列進行比較? –

+0

關於'array2'中的每個數組,它的長度是否可以大於'array1'的長度? – Adeel

+0

@DávidPásztor'array1'只是一維。 – Bella

回答

2

你想要一個新的數組,其中的array2每行是由 array1變體取代,元素最初不存在被替換的行中「 - 」:

let array1 = [1,2,3,4,5,6,7,8,9] 
let array2 = [[1,2,3,4], 
       [2,3,4,5], 
       [2,4,5,6], 
       [1,2,3,4,5,6,7,8,9], 
       [1,2,3,4,5,6,7,8], 
       [2,3,4,5,6,7,8]] 

let filled = array2.map { row in 
    array1.map { 
     row.contains($0) ? String($0) : "-" 
    } 
} 

for row in filled { print(row) } 

輸出:

 
["1", "2", "3", "4", "-", "-", "-", "-", "-"] 
["-", "2", "3", "4", "5", "-", "-", "-", "-"] 
["-", "2", "-", "4", "5", "6", "-", "-", "-"] 
["1", "2", "3", "4", "5", "6", "7", "8", "9"] 
["1", "2", "3", "4", "5", "6", "7", "8", "-"] 
["-", "2", "3", "4", "5", "6", "7", "8", "-"] 

對於大型陣列,可以通過爲 創建Set(row)來更快地進行遏制檢查,或者通過利用元件 同時增加訂單。

您的方法無法正常工作,因爲elementsArray 在迭代它時被修改。

+0

Yippie ... !!它的工作......非常感謝。 :)根據array1和array2的結果,還有一個數組array3具有不同的數據。問題是我必須通過匹配array2的每個元素來設置array3的值。請幫忙。 – Bella

+0

@貝拉:我試圖回答你的問題。如果您還有其他問題,請先嚐試使用此答案中提供的工具自行解決。如有必要,請提出一個新問題。 –

+0

對不起。如果沒有array1,該怎麼辦?我只能解決array2的問題。我試圖通過最好的方式來解決它,但沒有得到正確的方式 – Bella

相關問題