gpt4 book ai didi

ios - 根据另一个数组的顺序对数组进行高效排序

转载 作者:行者123 更新时间:2023-11-28 12:18:32 24 4
gpt4 key购买 nike

假设我有这个:

struct Pet {
let name: String
}

let pets = [Pet(name: "Z"), Pet(name: "F"), Pet(name: "A"), Pet(name: "E")]
let petNames = ["E", "F", "Z", "A"]

我的预期输出是:

[Pet(name: "E"), Pet(name: "F"), Pet(name: "Z"), Pet(name: "A")]

如何按照 petNames 的顺序对 宠物 进行有效排序?

我目前的方法似乎非常低效:

var sortedPets = [Pet]()
for n in petNames {
sortedPets.append(pets.first(where: { return $0.name == n })!)
}

我可以使用任何功能性方法吗?

最佳答案

效率不高,但从功能上解决了问题:

let pets2 = pets.sorted{petNames.index(of:$0.name)! < petNames.index(of:$1.name)!}

现在我们知道我们要做什么了,这更详细但更有效,因为字典查找速度很快:

var d = [String:Int]()
zip(petNames, 0..<petNames.count).forEach { d[$0.0] = $0.1 }
let pets2 = pets.sorted{d[$0.name]! < d[$1.name]!}

关于ios - 根据另一个数组的顺序对数组进行高效排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45626903/

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