Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 - Fatal编程技术网

Arrays Swift:数组中重复字符串时值之间的加法

Arrays Swift:数组中重复字符串时值之间的加法,arrays,swift,Arrays,Swift,假设我有一个如下所示的数组: 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 =

假设我有一个如下所示的数组:

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)
]
我想要一个新的数组,每个类型有1行,并且每个数组的值都以匹配的类型相互添加。大概是这样的:

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)]
输出:

[Game(type: "Soccer", value: 7), Game(type: "Hockey", value: 5), Game(type: "Basket", value: 5)]
我的(丑陋的)解决方案:D:D

import Cocoa

class Game {
    var name:String
    var value:Int

    init(withName aName:String, andValue value:Int) {
        self.name = aName
        self.value = value
    }
}

var someSports:[Game] = []
var tempDictOfGames:[String:Int] = [:]


var sports:[String] = ["Soccer", "Volleyball", "Tennis", "Rugby", "Tennis", "Soccer", "Tennis", "Cricket"]
var values:[Int] = [1, 5, 3, 8, 2, 9, 4, 7]


for (var i = 0; i < sports.count; i++) {

    var availableGameValue:Int? = tempDictOfGames[sports[i]]

    if let myValue = availableGameValue {
        tempDictOfGames[sports[i]]! += values[i]
    } else {
        tempDictOfGames[sports[i]] = values[i]
    }
}

for (k, v) in tempDictOfGames {
    let newGame = Game(withName: k, andValue: v)
    someSports.append(newGame)
}
导入可可粉
班级游戏{
变量名称:String
var值:Int
init(名称为aName:String,值为Int){
self.name=aName
自我价值=价值
}
}
var someSports:[游戏]=[]
var tempDictOfGames:[字符串:Int]=[:]
var sports:[字符串]=[“足球”、“排球”、“网球”、“橄榄球”、“网球”、“足球”、“网球”、“板球”]
变量值:[Int]=[1,5,3,8,2,9,4,7]
对于(变量i=0;i
我的(丑陋的)解决方案:D:D

import Cocoa

class Game {
    var name:String
    var value:Int

    init(withName aName:String, andValue value:Int) {
        self.name = aName
        self.value = value
    }
}

var someSports:[Game] = []
var tempDictOfGames:[String:Int] = [:]


var sports:[String] = ["Soccer", "Volleyball", "Tennis", "Rugby", "Tennis", "Soccer", "Tennis", "Cricket"]
var values:[Int] = [1, 5, 3, 8, 2, 9, 4, 7]


for (var i = 0; i < sports.count; i++) {

    var availableGameValue:Int? = tempDictOfGames[sports[i]]

    if let myValue = availableGameValue {
        tempDictOfGames[sports[i]]! += values[i]
    } else {
        tempDictOfGames[sports[i]] = values[i]
    }
}

for (k, v) in tempDictOfGames {
    let newGame = Game(withName: k, andValue: v)
    someSports.append(newGame)
}
导入可可粉
班级游戏{
变量名称:String
var值:Int
init(名称为aName:String,值为Int){
self.name=aName
自我价值=价值
}
}
var someSports:[游戏]=[]
var tempDictOfGames:[字符串:Int]=[:]
var sports:[字符串]=[“足球”、“排球”、“网球”、“橄榄球”、“网球”、“足球”、“网球”、“板球”]
变量值:[Int]=[1,5,3,8,2,9,4,7]
对于(变量i=0;i