Swift 对数组进行排序并返回索引和元素的数组

标签 swift sorting indexing filtering

我想对一个数组进行排序,并返回排序后数组中的索引和元素数组;

即:

var filtered = self.existingOrders.sorted(by: { (eo1:ExistingOrder, eo2:ExistingOrder) -> Bool in
                return (eo1.value < eo2.value)
            }).index(0, offsetBy: 0)

这只是给我一个特定数字的索引。

我想要一个排序的元素和索引数组;这样我就可以获取必要的索引并对它们进行操作。

我怎么做才能做到;

// pseduocode:

var filtered:(Index, Element) = self.existingOrders.sortByLowest.return(flatMap(index, element))

或者甚至可能链接一个枚举器来帮助我列出所有已编入索引的项目;排序后?

即:

 let filtered = self.existingOrders.sorted(by: { (eo1:ExistingOrder, eo2:ExistingOrder) -> Bool in
                return (eo1.value < eo2.value)
            }).enumerated().flatMap({ (offset:Int, element:ExistingOrder) -> (Int, ExistingOrder) in
                return (offset, element)
            })

我希望获得一个排序数组并将索引和元素返回到我的过滤器变量。

我该如何实现?

非常感谢

最佳答案

如果我正确理解你的问题,那么你可以使用 enumerated() 获取偏移量/元素对的序列并排序 这是根据元素。示例:

let array = ["C", "A", "B"]

let sortedElementsAndIndices = array.enumerated().sorted(by: {
    $0.element < $1.element
})

print(sortedElementsAndIndices) // [(1, "A"), (2, "B"), (0, "C")]

每个元组中的第一个元素是原始数组中第二个元组元素的索引。

在你的情况下它会是这样的

let sorted = self.existingOrders.enumerated().sorted(by: {
    $0.element.value < $1.element.value
})

关于Swift 对数组进行排序并返回索引和元素的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44300737/

相关文章:

swift - “Collection”要求类型 'MyCollectionClass.Element' 和 'Slice< MyCollectionClass>' 等效

ios - 可以编辑滑动以删除(在 UITableView 中)默认文本或翻译它吗?

C# 相当于 std::sort 和 std::unique

ios - 如何对基于 View 的表格 View 进行排序

mysql - 当在普通表和从索引表中进行选择之间执行内连接时,索引是否有用

swift - Swift 中的 BaseViewController 和 UIPageViewController

ios - 具有动态 tableView 高度的模糊布局

java - 这部分代码会在归并排序中执行吗?

python - 使用日期时间键的字典搜索

python - 使用 TxK 列索引数组从 TxN numpy 数组中选取 TxK numpy 数组