配列をネストされた配列と比較し、一致する値のリストではなく、一致するペアを出力するにはどうすればよいですか?(コードは説明に役立ちます)

ハリスアマ

言葉で表現する方法はよくわかりませんが、コードが役立つはずです。

var People = [

      .init(name: "Sam", friends: ["James", "Tom", "Rick"]),
      .init(name: "Tom", friends: ["Callum", "Steve", "Sam"]),
      .init(name: "Adam", friends: ["Harry", "Diane", "William"]),
      .init(name: "William", friends: ["Rodger", "Adam", "Bill"]),
      .init(name: "Guy", friends: ["Zack", "Frank", "Cody"])
]

印刷するアラートを生成したい

" Sam is in the same social circle as Tom " / " Tom is in the same social circle as Sam "

そして

" Adam is in the same social circle as William " / " William is in the same social circle as Adam "

そして

" Guy has no common social circles "

私がこれを試みた方法は、最初に名前の配列を作成することです:[String]、次に友人に対して同じことを行い、次の関数を使用して[[String]]を[String]に変換します...

func loadNamesArray() -> [String] {
    return self.People.map { $0.name }
}

func loadFriendsArray() -> [String] {
    let arrayOfFriends = self.People.map { $0.friends }
    let friends = arrayOfFriends.flatMap { $0 }
    return friends
}

次に、2つの配列を相互比較して、この関数を使用している一般の人々に警告します...

func loadCommonInteractingArray() -> [String] {
    let output = loadNamesArray().filter{ loadFriendsArray().contains($0) }

    return output
}

しかし、これは["Sam"、 "Tom"、 "Adam"、 "William"]を返すだけであり、ここから目的の結果を得るためにどこに行けばよいかわかりません。つまり、単なるリストではなく、一致するペアを特定します。一致するもの。

ありがとう

レオ・ダバス
struct Person {
    let name: String
    let friends: [String]
}

var people: [Person] = [
      .init(name: "Sam", friends: ["James", "Tom", "Rick"]),
      .init(name: "Tom", friends: ["Callum", "Steve", "Sam"]),
      .init(name: "Adam", friends: ["Harry", "Diane", "William"]),
      .init(name: "William", friends: ["Rodger", "Adam", "Bill"])]

func loadCommonInteracting(in people: [Person]) -> [String] {
    var connections: [String] = []
    people.forEach { person in
        let friends = people.filter{ $0.friends.contains(person.name) }
        for friend in friends {
            connections.append("\(person.name) is in the same social circle as \(friend.name)")
        }
        
    }
    return connections
}

let connections = loadCommonInteracting(in: people)
for connection in connections {
    print(connection)
}

これは印刷されます

サムはトムと同じ社会的サークルにいます

トムはサムと同じ社会的サークルにいます

アダムはウィリアムと同じ社会的サークルにいます

ウィリアムはアダムと同じ社会的サークルにいます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

TOP 一覧

  1. 1

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  2. 2

    Spring Boot Filter is not getting invoked if remove @component in fitler class

  3. 3

    Python / SciPyのピーク検出アルゴリズム

  4. 4

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  5. 5

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  6. 6

    androidsoongビルドシステムによるネイティブコードカバレッジ

  7. 7

    ZScalerと証明書の問題により、Dockerを使用できません

  8. 8

    VisualStudioコードの特異点/ドッカー画像でPythonインタープリターを使用するにはどうすればよいですか?

  9. 9

    ビュー用にサイズ変更した後の画像の高さと幅を取得する方法

  10. 10

    二次導関数を数値計算するときの大きな誤差

  11. 11

    Ansibleで複数行のシェルスクリプトを実行する方法

  12. 12

    画像変更コードを実行してもボタンの画像が変更されない

  13. 13

    Reactでclsxを使用する方法

  14. 14

    Three.js indexed BufferGeometry vs. InstancedBufferGeometry

  15. 15

    __init__。pyファイルの整理中に循環インポートエラーが発生しました

  16. 16

    PyTesseractを使用した背景色のため、スクリーンショットからテキストを読み取ることができません

  17. 17

    値間の一致を見つける最も簡単な方法は何ですか

  18. 18

    reCAPTCHA-エラーコード:ユーザーの応答を検証するときの「missing-input-response」、「missing-input-secret」(POSTの詳細がない)

  19. 19

    三項演算子良い練習の代わりとしてOptional.ofNullableを使用していますか?

  20. 20

    好き/愛の関係のためのデータベース設計

  21. 21

    エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

ホットタグ

アーカイブ