代码之家  ›  专栏  ›  技术社区  ›  WH48

Swift-合并两个数组,同时删除重复的键并将数组值添加到一起

  •  2
  • WH48  · 技术社区  · 6 年前

    我有两个数组,类似下面的例子。我想做的是把两者合并在一起。如果它们的键相等,则删除重复项并将两个值相加。

    非常感谢您的帮助,非常感谢!!

    struct Example: Codable {
        var key: String
        var value: Int
    }
    
    var first: [Example] = []
    var second: [Example] = []
    
    first.append(Example(key: "1", value: 10))
    first.append(Example(key: "2", value: 10))
    first.append(Example(key: "3", value: 10))
    
    second.append(Example(key: "2", value: 10))
    second.append(Example(key: "3", value: 10))
    second.append(Example(key: "4", value: 10))
    
    
    let merged = Array(Dictionary([first, second].joined().map { ($0.key, $0)}, uniquingKeysWith: { $1 }).values)
    

    当前打印

    Example(key: "3", value: 10)
    Example(key: "1", value: 10)
    Example(key: "2", value: 10)
    Example(key: "4", value: 10)
    

    Example(key: "3", value: 20)
    Example(key: "1", value: 10)
    Example(key: "2", value: 20)
    Example(key: "4", value: 10)
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Sweeper    6 年前

    uniqueKeysWith Example 包含相同键和两个参数值之和的:

    let merged = Array(Dictionary([first, second].joined().map { ($0.key, $0)}, uniquingKeysWith: { Example(key: $0.key, value: $0.value + $1.value) }).values)