gpt4 book ai didi

swift - 数组排序逻辑

转载 作者:行者123 更新时间:2023-11-30 12:06:02 25 4
gpt4 key购买 nike

我有一个 swift 数组,其中按某种顺序有 5 个元素。[A1、B2、C3、D4、E5]我有另一个空数组。可以输入第一个数组中存在的 5 个选项来插入。

当插入值时,它需要按照基本数组的顺序。假设首先插入 D4,因此 D4 将插入数组 [D4]

如果插入 A1,则数组顺序将为 [A1, D4]如果插入 E5,则数组顺序将为 [A1, D4, E5]

任何人都可以提出一些相同的逻辑。

最佳答案

这是一种间接排序顺序,可以按如下方式实现:

let base   = ["A1", "B2", "C3", "D4", "E5"]
let order = [String:Int](uniqueKeysWithValues: base.enumerated().map{($1,$0)})

var selection:[String] = []

func addToSelection(_ value:String)
{ selection = (selection + [value]).sorted{order[$0]! < order[$1]!} }

// adding values ...
addToSelection("D4") // ["D4"]
addToSelection("E5") // ["D4","E5"]
addToSelection("A1") // ["A1","D4","E5"]

如果您使用 Swift 3(或者如果您更喜欢这种表示法),订单字典可以这样初始化:

let order:[String:Int] = ["A1":1, "B2":2, "C3":3, "D4":4, "E5":5]

.

.

另一种不涉及排序的方法是将您的选择用作基本数组的过滤器:

let base ["A1", "B2", "C3", "D4", "E5"]

var selection:[String] = []

func addToSelection(_ value:String)
{ selection = base.filter{selection.contains($0) || $0 == value } }

但这实际上返回基本数组的元素(而不是选择的元素),如果您使用对象而不仅仅是字符串,这可能是一个问题。

关于swift - 数组排序逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46667742/

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