Ios 如何比较数组和嵌套数组并打印匹配对,而不是匹配值的列表?(代码帮助解释)
我不确定如何用文字表达,但代码应该会有所帮助Ios 如何比较数组和嵌套数组并打印匹配对,而不是匹配值的列表?(代码帮助解释),ios,arrays,swift,swift5,Ios,Arrays,Swift,Swift5,我不确定如何用文字表达,但代码应该会有所帮助 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: "W
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 "
及
及
我尝试的方法是首先创建一个名称数组:[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
}
但这只会返回[“Sam”、“Tom”、“Adam”、“William”],我不确定从这里到哪里才能得到我想要的结果,即识别匹配对,而不仅仅是匹配对的列表
谢谢据我所知,您正试图找到任何其他人的
好友
数组中包含的每个人
for person in people {
let others = people.filter {$0 != person}
for other in others {
if other.friends.contains(person.name) {
print("\(person.name) is in the same social circle as \(other.name)")
}
}
}
People
model类必须符合equalable
才能执行上述操作
struct Person {
let name: String
let friends: [String]
}
这会打印出来 萨姆和汤姆在同一个社交圈 汤姆和萨姆在同一个社交圈 亚当和威廉在同一个社交圈 威廉和亚当在同一个社交圈
如果People不符合equalable
People.filter{$0.name!=person.name}
@LeoDabus您知道我如何将其放入函数并返回可以放入这些变量的值:State var AlertStatement:String,和状态变量警报:Bool@Jithin你知道我如何将其放入函数并返回可以放入这些变量的值吗:State var AlertStatement:String,和State var AlertOn:bool只需创建一个空字符串数组,并将字符串附加到该数组中,而不是打印it@LeoDabusprint语句所在的位置我已经放置了AlertStatement.append((drug.name)与(inter.name)在同一社交圈中),但变量仍然是空字符串?
for person in people {
let others = people.filter {$0 != person}
for other in others {
if other.friends.contains(person.name) {
print("\(person.name) is in the same social circle as \(other.name)")
}
}
}
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)
}