【问题标题】:How to merge two arrays in Swift如何在 Swift 中合并两个数组
【发布时间】:2018-09-17 21:30:28
【问题描述】:

我有两个数组。

let A = ["91","91","49"]
let B = ["9989898909","9089890890","9098979896"]

我需要合并这些数组并在下拉列表中显示为

["91 9989898909","91 9089890890","49 9098979896"]

如何使用 swift 获得此结果。我是 swift 的新手,谁能帮忙解决这个问题。

【问题讨论】:

  • 是否确认数组(A和B)大小相同。
  • 是的,两个尺寸一样
  • 确定 c 的第三个元素以“91”开头?如果是这样,那么这并不是真正的合并......
  • 为什么数组中的第三个字符串不是以49开头的?

标签: arrays swift merge zip


【解决方案1】:

压缩数组并连接结果:

let A=["91","91","49"]
let B=["9989898909","9089890890","9098979896"]
let zipped = zip(A, B)
let result = zipped.map { $0.0 + " " + $0.1 }

【讨论】:

  • 使用并行数组很快就会变得一团糟,zip 是处理它们的最佳方式。这是最好的答案。
  • 我可以用三个数组做到这一点
  • 当然,只需嵌套 zip 调用:zip(A, zip(B,C))
【解决方案2】:

这是 Swift 中的一个 sn-p:

let a = ["90", "91", "92"]
let b = ["80012", "82379", "123712"]

let result: [String] = a.enumerated().map { (index, element) in
    return index < b.count ? element + " " + b[index] : element
}

【讨论】:

  • 请注意,如果a.count 大于b.count,您会得到:“致命错误:索引超出范围”错误。
【解决方案3】:
let A = ["91","91","49", "5"]
let B = ["9989898909","9089890890","9098979896"]

使用zip() 连接数组AB 中的值。如果 AB 有不同数量的元素,则连接仍然有效。然后map 压缩结果数组中的元组到它们之间有空格的元素

let C : [String] = zip(A,B).map {$0 + " " + $1}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2019-06-13
    相关资源
    最近更新 更多