Swift 3比较数组索引

时间:2016-10-11 21:44:27

标签: arrays swift indexing

如果我有两个阵列&我想比较他们的索引,例如:

let var a1 = ["1", "2", "3"]
let var a2 = ["3", "2", "3"]

我想打印一些东西来说明哪个索引不相同,例如:

if a1[0] != a2[0] && a1[1] == a2[1] && a1[2] == a2[2]{
print("Index 0 is not the same.")

我是否还要写下7个这样的陈述,以显示所有正确/全部错误/索引1&1错误的所有8种可能性等等?

谢谢!

4 个答案:

答案 0 :(得分:8)

你可以得到这样的所有索引:

let diffIndex = zip(a1, a2).enumerated().filter {$1.0 != $1.1}.map {$0.offset}

说明:

  • zip生成一系列对
  • enumerated()为序列添加索引
  • filter仅保留具有不同值的对
  • map收获索引,并构建结果序列。

上运行
let a1 = ["1", "2", "3", "4"]
let a2 = ["3", "2", "3", "5"]

这会产生一个序列[0, 3]

答案 1 :(得分:0)

使用for循环:

for i in 0..<a1.length {
    if a1[i] != a2[i] {
        print("Index \(i) is not the same")
    }
}

通常,如果您发现自己重复相同的代码但使用不同的数字,则可以使用for循环替换它。

答案 2 :(得分:0)

试试这个

let a1 = ["1", "2", "3"]
let a2 = ["3", "2", "3"]

let result = zip(a1, a2).map({ $0 == $1 }).reduce(true, {$0 && $1})

答案 3 :(得分:0)

当然你可以这样做:

let a1 = ["1", "2", "3"]
let a2 = ["3", "2", "3"]

var compareResult : [String] = [String]()

if a1.count == a2.count { // Need to check they have same length

    for count in 0..<a1.count {
        let result : String = a1[count] == a2[count] ? "MATCH" : "MISMATCH"
        compareResult.append(result)
    }

    print(compareResult)
    // Do something more interesting with compare result...
}