gpt4 book ai didi

arrays - 如何将值从一个数组添加到另一个数组?

转载 作者:搜寻专家 更新时间:2023-11-01 06:33:17 25 4
gpt4 key购买 nike

我有两个数组,其中一个必须补全另一个:

struct Score {
let name: String
let isComplete: Bool
let finalScore: Int
}

var scores = [
Score(name: "Steven", isComplete: false, finalScore: 12),
Score(name: "Helen", isComplete: false, finalScore: 12),
Score(name: "Adalbert", isComplete: false, finalScore: 12),
Score(name: "Christian", isComplete: false, finalScore: 12),
Score(name: "Susan", isComplete: false, finalScore: 3),
Score(name: "Julia", isComplete: false, finalScore: 13),
Score(name: "Robert", isComplete: false, finalScore: 13),
Score(name: "Mercedes", isComplete: false, finalScore: 2),
Score(name: "Gwendolin", isComplete: false, finalScore: 2),
]



struct Complete {
let name: String
let isComplete: Bool
}

var complete = [
Complete(name: "Steven", isComplete: true),
Complete(name: "Helen", isComplete: true),
Complete(name: "Mercedes", isComplete: false),
Complete(name: "Gwendolin", isComplete: true),
// Name doesn´t exist in `score` and shouldn´t show up in the result:
Complete(name: "nonexistingName", isComplete: true)
]

我怎样才能用第二个数组的值完成第一个数组,结果如下所示:

let result = [
Score(name: "Steven", isComplete: true, finalScore: 12),
Score(name: "Helen", isComplete: true, finalScore: 12),
Score(name: "Adalbert", isComplete: false, finalScore: 12),
Score(name: "Christian", isComplete: false, finalScore: 12),
Score(name: "Susan", isComplete: false, finalScore: 3),
Score(name: "Julia", isComplete: false, finalScore: 13),
Score(name: "Robert", isComplete: false, finalScore: 13),
Score(name: "Mercedes", isComplete: false, finalScore: 2),
Score(name: "Gwendolin", isComplete: true, finalScore: 2),
]

通常我会发布我的尝试草稿,但由于我对 swift 还很陌生,所以我不得不承认我不知道。感谢您的任何建议。

最佳答案

最终,您可能应该重新考虑您的模型,可能使用某种“玩家”模型,这样您就不会出现这种脱节。

FWIW 这是使用字典执行此操作的更安全/更简单的方法:

struct Score {
let name: String
var isComplete: Bool
let finalScore: Int
}

struct Complete {
let name: String
let isComplete: Bool
}

var scoresDictionary: [String : Score] = [:]

// this populates scoresDictionary with your array, keyed with the names
[ Score(name: "Steven", isComplete: false, finalScore: 12),
Score(name: "Helen", isComplete: false, finalScore: 12),
Score(name: "Adalbert", isComplete: false, finalScore: 12),
Score(name: "Christian", isComplete: false, finalScore: 12),
Score(name: "Susan", isComplete: false, finalScore: 3),
Score(name: "Julia", isComplete: false, finalScore: 13),
Score(name: "Robert", isComplete: false, finalScore: 13),
Score(name: "Mercedes", isComplete: false, finalScore: 2),
Score(name: "Gwendolin", isComplete: false, finalScore: 2),
].forEach { scoresDictionary[$0.name] = $0}

let complete = [
Complete(name: "Steven", isComplete: true),
Complete(name: "Helen", isComplete: true),
Complete(name: "Mercedes", isComplete: false),
Complete(name: "Gwendolin", isComplete: true),
// Name doesn´t exist in `score` and shouldn´t show up in the result:
Complete(name: "nonexistingName", isComplete: true)
]

//Updates only the found values in scoresDictionary
complete.forEach { scoresDictionary[$0.name]?.isComplete = $0.isComplete }

// The dictionary is updated, but in case you just want the Scores, this gives you an array
let result: [Score] = Array(scoresDictionary.values)

关于arrays - 如何将值从一个数组添加到另一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44768762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com