我也有一个任意的值数组,称为positionOrders,如下所示:
let positionOrders = [“QB”,“WR”,“RB”,“TE”]
我的目标是将[Player]排序为首先拥有所有“QB”,然后是“WR”,最后是“TE”.
我正在做的当前方式循环遍历positionOrders中的每个元素,然后在内部循环遍历所有玩家以附加到新数组.但是,我无法想出一种更简单(更有效)的方法.非常感谢任何提示或指示.谢谢.
对于小尺寸的positionOrders,这是一种可行的方法:let sorted = players.sorted{ positionOrders.index(of:let ordering = Dictionary(uniqueKeysWithValues: x.enumerated().map { (,) })let sorted = players.sorted{ ordering[.position]! < ordering[.position]! }.position)! < positionOrders.index(of: .position)! }
这是一个更复杂的解决方案,对于更大尺寸的positionOrders来说会更快
这两种解决方案都假设所有可能的玩家位置都根据positionOrders有一个定义的顺序,因此他们使用!为了简洁.如果不是这样,请告诉我.
总结以上是内存溢出为你收集整理的arrays – 通过从另一个数组中排序来对Swift数组进行排序全部内容,希望文章能够帮你解决arrays – 通过从另一个数组中排序来对Swift数组进行排序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)