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

私はSwiftの新機能ですが、この2つの配列をidと比較するのに最適な方法は何ですか?この場合、「名前」とInt値で新しい配列を作成します。Swift - 2つの配列の値を比較した結果に基づく新しい配列

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

ありがとうございました。

+0

FYI - それは、データの収集を保持するために、配列を使用するには、本当に貧しいデザインです。 id、name、valueの3つのプロパティを持つ 'struct'を宣言する必要があります。次に、それらの構造体の配列を使用します。 – 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アドバイスを取ることが重要です。 –

関連する問題