Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Swift-合并两个数组,同时删除重复的键并将数组值添加到一起_Arrays_Swift_Dictionary_Array Merge - Fatal编程技术网

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

Arrays Swift-合并两个数组,同时删除重复的键并将数组值添加到一起,arrays,swift,dictionary,array-merge,Arrays,Swift,Dictionary,Array Merge,我有两个数组,看起来像下面的例子。我想做的是将两者合并在一起。如果它们的键相等,则删除重复项并将两个值相加 非常感谢您的帮助,非常感谢 当前代码: struct Example: Codable { var key: String var value: Int } var first: [Example] = [] var second: [Example] = [] first.append(Example(key: "1", value: 10)) first.appen

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

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

当前代码:

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: 20)
Example(key: "1", value: 10)
Example(key: "2", value: 20)
Example(key: "4", value: 10)
当前打印

Example(key: "3", value: 10)
Example(key: "1", value: 10)
Example(key: "2", value: 10)
Example(key: "4", value: 10)
我想做什么:

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: 20)
Example(key: "1", value: 10)
Example(key: "2", value: 20)
Example(key: "4", value: 10)
你快到了

uniqueKeysWith
参数中,您应该创建一个新的
示例
,该示例包含相同的键以及两个参数值的总和:

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

很好用!非常感谢你!!