2017-07-15 54 views
0
idsArr = [ "id12345", "id27891", "id98654"] 
idsNameIntvalueArr = [["id22913", "Peter Parker", 15], ["id12345", "Donald Duck", 6], ["id98654", "Mickey Mouse", 9], ["id112233", "Lion King", 9]] 

我在斯威夫特是新的比較值的結果是新的數組,請給我意見,什麼是最好的做法是由ID這2個數組比較,如果ID匹配,需要使用「名稱」和Int值創建新陣列,在這種情況下:斯威夫特 - 基於兩個數組

resultArr = [["Donald Duck", 6],["Mickey Mouse", 9]] 

謝謝。

+0

僅供參考 - 使用數組來保存數據集合是一個非常糟糕的設計。你應該聲明一個'struct',它具有id,name和value三個屬性。然後使用這些結構的數組。 – rmaddy

+0

感謝您的諮詢! – Rurom

回答

1

可以是這樣做的:

let resultArr = idsNameIntvalueArr.filter({ idsArr.contains($0[0] as! String) }).map({ [$0[1], $0[2]] }) 

首先,您需要將濾鏡陣列,只包括其ID存在於idsArr成員。

然後,在過濾數組後,您需要創建僅包含名稱和年齡的子數組,這就是map所做的。

+0

很好的解決方案,非常感謝! – Rurom

+1

不客氣,重要的是認真對待@rmaddy的建議,祝你好運。 –