2017-07-15 90 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的建议,祝你好运。 –