我的第一个数组是
arr1 = [1, 2, 3, 4 , 5]
我的第二个数组是
arr2 = [2, 3, 4]
我想将 arr1 与 arr2 进行比较,并输出带有输出的第三个数组
arr3 = ["No match", 2, 3, 4, "No match"]
因此,我在 arr1 和 arr2 不匹配的索引中添加了一个占位符值。Arr1 和 arr2 并不总是排序。
如何在 Swift 3 中执行此操作?想不出一个可以工作的循环:/
一个简单的解决方案是
let arr1 = [1,2,3,4,5,6]
let arr2 = [2,3,4]
var arr3 = [String]()
for value in arr1{
if arr2.contains(value){
arr3.append("(value)")
} else {
arr3.append("No Match")
}
}
单线解决方案将是
let results = arr1.map {arr2.contains($0) ? "($0)" : "No Match"}
你可以试试这个:
let arr1 = [1,2,7,3,4,5]
let arr2 = [2,3,4,7]
var arr3 = [Any]()
var count = Int()
let sortedArr1 = arr1.sorted()
let sortedArr2 = arr2.sorted()
let arrCount1 = sortedArr1.count
let arrCount2 = sortedArr2.count
if arrCount1 > arrCount2 {
count = arrCount1
}else {
count = arrCount2
}
for i in 0..<count {
if sortedArr2.contains(sortedArr1[i]){
arr3.append(sortedArr1[i])
}else {
arr3.append("Not Matched")
}
}
当您打印输出数组时,它将为您提供所需的结果:
print(arr3) //Outputs :["Not Matched", 2, 3, 4, "Not Matched", 7]
或者一行代码将如下所示:
let arr3 = sortedArr1.map {sortedArr2.contains($0) ? "($0)" : "Not Matched"}
print(arr3) //Outputs :["Not Matched", 2, 3, 4, "Not Matched", 7]
如果你想要字符串数组而不是任何字符串。 你可以试试这个
let arr1 = [1, 2, 3, 4 , 5]
let arr2 = [2, 3, 4]
let test = arr1.map{
(item) -> String in
if arr2.contains(item){
return "(item)"
}else{
return "No match"
}
}
print(test)//["No match", "2", "3", "4", "No match"]