Я не совсем уверен, как выразить это словами, но код должен помочь.
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
}
Затем я сравнил два массива, чтобы предупредить всех простых людей, использующих эту функцию ...
func loadCommonInteractingArray() -> [String] {
let output = loadNamesArray().filter{ loadFriendsArray().contains($0) }
return output
}
Но это просто возвращает ["Сэм", "Том", "Адам", "Уильям"], и я не уверен, куда отсюда go получить желаемые результаты, т.е. определить совпадающие пары, а не просто список из них. этот матч
Спасибо