我的第一个数组是
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中解决这个问题?无法想出一个可行的循环:/
答案 0 :(得分:1)
一个简单的解决方案
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"}
答案 1 :(得分:0)
你可以试试这个:
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]
答案 2 :(得分:0)
如果你想要字符串数组而不是任何字符串。你可以试试这个
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"]