按另一个数组排序数组?

Posted

技术标签:

【中文标题】按另一个数组排序数组?【英文标题】:Sort array by other array? 【发布时间】:2017-08-02 13:27:00 【问题描述】:

我想知道如何在 Swift 3 中按另一个数组对数组进行排序

假设我有:

struct Channel 
    var id: Int


let channel1 = Channel(id: 1)
let channel2 = Channel(id: 2)
let channel3 = Channel(id: 3)
let channel4 = Channel(id: 4)
let channel5 = Channel(id: 5)

var original = [channel1, channel2, channel3, channel4, channel5]
var favorites = [channel3, channel2, channel1, channel4]

我想将原始数组排序为:

[channel3, channel2, channel1, channel4, channel5]

是否有任何快速且低消耗的方法来做到这一点?

【问题讨论】:

【参考方案1】:
favorites.append(contentsOf: original.filter  chanel in
    !favorites.contains(where:  $0.id == chanel.id )
)

【讨论】:

嗯,这很简单!谢谢。【参考方案2】:

Zip 是实现这一目标的简单方法

// use zip to combine the two arrays and sort that based on the first
// Your original array

let combined = zip(array1, array2).sort $0.0 < $1.0
print(combined) //  

// Now use map to extract the individual arrays    
let sorted1 = combined.map $0.0
let sorted2 = combined.map $0.1

希望对你有帮助

【讨论】:

以上是关于按另一个数组排序数组?的主要内容,如果未能解决你的问题,请参考以下文章

PHP按另一个数组中的特定键对数组进行排序[重复]

Java按整数字段对对象数组进行排序,如果它们相同,则按另一个整数值排序

对象数组按另一个数组值过滤

iOS 在一个数组中搜索,按另一个数组的索引匹配

使用 PHP 按另一个数组中的值过滤数组

js对象数组按照另一个数组排序