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

前端之家收集整理的这篇文章主要介绍了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有一个定义的顺序,因此他们使用!为了简洁.如果不是这样,请告诉我.

猜你在找的Swift相关文章