arrays – 通过从另一个数组中排序来对Swift数组进行排序

假设我有一个自定义类[Player]的数组,每个类都包含一个名为player.position的字符串属性

我也有一个任意的值数组,称为positionorders,如下所示:

let positionorders = [“QB”,“WR”,“RB”,“TE”]

我的目标是将[Player]排序为首先拥有所有“QB”,然后是“WR”,最后是“TE”.

我正在做的当前方式循环遍历positionorders中的每个元素,然后在内部循环遍历所有玩家以附加到新数组.但是,我无法想出一种更简单(更有效)的方法.非常感谢任何提示或指示.谢谢.

对于小尺寸的positionorders,这是一种可行的方法
let sorted = players.sorted{ positionorders.index(of: $0.position)! < positionorders.index(of: $1.position)! }

这是一个更复杂的解决方案,对于更大尺寸的positionorders来说会更快

let ordering = Dictionary(uniqueKeysWithValues: x.enumerated().map { ($1,$0) })

let sorted = players.sorted{ ordering[$0.position]! < ordering[$1.position]! }

这两种解决方案都假设所有可能的玩家位置都根据positionorders有一个定义的顺序,因此他们使用!为了简洁.如果不是这样,请告诉我.

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...