ios - 如何根据另一个数组位置对数组进行排序?

标签 ios arrays swift sorting

我有一个tableView,它的样式是Right Detail。因此我有 2 个数组,一个用于textLabels 数据,另一个用于detailTextLabel

将有 2 个“排序依据”选项。一个将按 textLabels 数据排序,第二个将按 detailTextlabels 数据排序。因此,当我对第一个 array (textLabels array) 进行排序时,第二个 array (detailTextLabels array) 也必须根据在第一个 array` 上。

我知道如何对数组进行排序,但是如何根据一个数组对另一个进行排序?

这是我对 array 进行排序的方式:(它是 Datesarray

firstArray.sort({ (a, b) -> Bool in
    a.earlierDate(b) == a
})

最佳答案

首先,为什么不用两个数组?因为您只有一个 UITableViewCells 数组,并且您希望将与特定表格 View 单元格关联的所有数据放在一起。这使得尝试协调多个数组的排序(您要执行的操作)变得不必要。

但是如果你真的想这样做:

var array1 = ["1", "3", "2"]
var array2 = ["One", "Three", "Two"]

let sortedFoo = zip(array1, array2).sort { $0.0 < $1.0 }

array1 = sortedFoo.map { $0.0 }
array2 = sortedFoo.map { $0.1 }

上面代码的想法是,它将两个数组组合成一个元组数组,然后根据第一个数组中的元素对它们进行排序,然后将该单个数组拆分回两个单独的数组。

换句话说,既然无论如何都必须将两个数组组合成一个来进行排序,那么您不妨首先将它们放在一个数组中。 :-)

关于ios - 如何根据另一个数组位置对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32301573/

相关文章:

c - 在同一张表中总结不同类型有什么技巧吗?

c++ - 非静态数据成员 c++ 的无效使用

ios - 为 Collection View 中的单元格设置偏移量或初始位置

ios - 我怎样才能将 NSLayoutConstraints 应用于元素,使其始终位于他下方元素的中间?

ios - 单元格数量有限的 UITableView

ios - 两个 Collection View Cell 之间的转换

jquery - Ajax 调用在 ios 中立即失败,文本状态为 : error and HTTP status 0 on Cordova,

javascript - 如何在angularJS中将字符串转换为数组

来自 datePicker 的 Swift 通知触发

swift - Realm Swift 多对多逆向关系