获取数组排序的索引

羽毛球猫

将一些旧的 AS3 代码移植到 Swift 我在代码中遇到了一个障碍......在 AS3 中,您可以让数组排序操作返回排序结果索引的数字数组,例如

var indices = columns[0].sort(Array.RETURNINDEXEDARRAY | Array.CASEINSENSITIVE);

如果您为 ...args 参数的 sortOptions 参数指定值 8 或 Array.RETURNINDEXEDARRAY,Flash 将返回索引的排序数字数组,该数组反映排序的结果并且不会修改该数组。( AS3 API )

Swift 4 中是否有任何可用的解决方案可以为我提供排序索引?

里奥·达布斯

您可以枚举数组,按元素对其进行排序并映射元素偏移量:

let array = [1,3,2,5,4]
let sortedIndices = array.enumerated()
                  .sorted{ $0.element < $1.element }
                  .map{ $0.offset }
sortedIndices   // [0, 2, 1, 4, 3]

如果您愿意,也可以扩展 Collection 并实现您自己的方法,如果您将其元素限制为 Comparable 协议:

extension Collection where Element: Comparable {
    func sortedIndices() -> [Int] {
        return enumerated()
            .sorted{ $0.element < $1.element }
            .map{ $0.offset }
    }
}

let array = [1,3,2,5,4]
let sortedIndices = array.sortedIndices()
sortedIndices   // [0, 2, 1, 4, 3]

另一种选择是添加一个闭包作为参数以允许排序:

extension Collection where Element: Comparable {
    func sortedIndices() -> [Int] {
        return sortedIndices(by: <)
    }
}
extension Collection {
    func sortedIndices(by condition: (Element, Element) -> Bool) -> [Int] {
        return enumerated()
            .sorted{ condition($0.element,$1.element) }
            .map{ $0.offset }
    }
}

let array = [1,3,2,5,4]
let sortedIndices = array.sortedIndices(by: >)
sortedIndices    // [3, 4, 1, 2, 0]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

选择排序获取错误的数组索引

来自分类Dev

Javascript - 排序后获取“WILL BE”关系的索引数组

来自分类Dev

从 Ruby 中的排序中获取数组索引

来自分类Dev

从原始错误获取排序数组的索引位置

来自分类Dev

如何根据某个索引获取数组值的总和(未排序)

来自分类Dev

Julia-如何对数组进行排序并获取索引

来自分类Dev

Numpy获取排序数组中的插入索引

来自分类Dev

在排序之前获取具有重复值的数组元素的索引

来自分类Dev

排序数组的索引

来自分类Dev

MongoDB:按数组索引排序

来自分类Dev

Javascript排序索引链接数组

来自分类Dev

Javascript排序索引链接数组

来自分类Dev

如何获取数组的索引

来自分类Dev

获取负数组索引

来自分类Dev

获取过滤数组的索引

来自分类Dev

获取索引数组的值?

来自分类Dev

获取数组索引的值

来自分类Dev

从名称获取数组的索引

来自分类Dev

从Javascript数组获取索引

来自分类Dev

获取矩阵排序元素的索引

来自分类Dev

对数组进行排序并检索排序的索引

来自分类Dev

获取数字索引(如果已将其插入到已排序的数组中)

来自分类Dev

如何在JSON中排序数组以获取特定索引的值?

来自分类Dev

使用numpy分区排序后如何获取数组中浮点数的索引

来自分类Dev

将索引数组排序为主数组

来自分类Dev

按索引/索引的单独数组对数组排序的最快方法

来自分类Dev

获取重复项的数组索引

来自分类Dev

获取重复项的数组索引

来自分类Dev

PHP从数组索引获取值