假设我有一个这样的数组:

let games = [
  Game(type: "Soccer", value: 1),
  Game(type: "Basket", value: 3),
  Game(type: "Hockey", value: 5),
  Game(type: "Soccer", value: 2),
  Game(type: "Soccer", value: 4),
  Game(type: "Basket", value: 2)
]

我想要一个新的数组,每种类型有一行,并用匹配的类型互相添加值。像这样的:
let newGames = [
  NewGame(type: "Soccer", value: 7),
  NewGame(type: "Basket", value: 5),
  NewGame(type: "Hockey", value: 5)
]

请帮忙。我的大脑不合作。

最佳答案

struct Game {
    let type: String
    let value: Int
}

let games: [Game] = [
    Game(type: "Soccer", value: 1),
    Game(type: "Basket", value: 3),
    Game(type: "Hockey", value: 5),
    Game(type: "Soccer", value: 2),
    Game(type: "Soccer", value: 4),
    Game(type: "Basket", value: 2)
]

var totalValueForGame = [String: Int]()
for game in games {
    totalValueForGame[game.type] = game.value + (totalValueForGame[game.type] ?? 0)
}

let newGames = totalValueForGame.map { Game(type: $0, value: $1) }
print(newGames)

输出:
[Game(type: "Soccer", value: 7), Game(type: "Hockey", value: 5), Game(type: "Basket", value: 5)]

关于arrays - Swift:数组中重复字符串时值之间的加法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33486251/

10-12 00:21
查看更多