Swift 3 - 比较两个不等长的数组,并在其中附加占位符值以使它们相等



我的第一个数组是

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"]

最新更新