var fakeArray [("Potato", True),("root", false),("dog", False),("cat", True)]
var OtherFakeArray ["person","cat","dog","figg"]
var finalArrat[(String,Bool)]
我想在第二个数组中的第一个数组中找到任何项目,将其附加到最终字符串和布尔值中,然后复制在FakeArray中找不到的其余项目,同时将它们附加到finalArray将FALSE bool应用于每个对象,以便可以将它们存储在最终数组中,因此结果应为
finalArray[("dog",false),("cat",True),("figg", False),("person",False)]
因此,最后一个数组包含来自otherFakeArray的所有条目,可以与fakeArray匹配的条目具有其原始的布尔状态,而未找到的条目将获得新的False状态添加到最终的状态。
答案 0 :(得分:2)
从fakerArray中过滤出otherFakerArray中包含的所有内容。找出所有未包含的项,并从中进行元组(_,false)附加到包含的项中。
这样的事情,
var result = fakeArray.filter { OtherFakeArray.contains($0.0) }
let notFoundItems = OtherFakeArray.filter { item in
!result.contains(where: { $0.0 == item })
}.map { ($0, false) }
result += notFoundItems
print(result)
这是更好的版本,
let result = OtherFakeArray.map { string in
fakeArray.first(where: { $0.0 == string}) ?? (string, false)
}
您的代码审核
您没有使用Swift布尔类型。它应该是true
或false
之一,不能是True
和False
。您是否尝试使用xcode进行编译。它不应该编译。您是如何在没有实际尝试的情况下提出问题的。
这是您实际类型的外观。
let fakeArray = [("Potato", true),("root", false),("dog", false),("cat", true)]
let OtherFakeArray = ["person","cat","dog","figg"]
答案 1 :(得分:1)
您可以尝试
let res1 = fakeArray.filter { otherFakeArray.contains($0.0) }
let tem = fakeArray.map { $0.0 }
let final = otherFakeArray.filter { !tem.contains($0)}.map { ($0,false)} + res1