在Swift中,我说有两个阵列:
var array1: [Int] = [100, 40, 10, 50, 30, 20, 90, 70]
var array2: [Int] = [50, 20, 100, 10, 30]
我想按照array2
对aary1进行排序所以我的array1的最终输出将是:// array1 = [50,20,100,10,30, 40,90,70]
答案 0 :(得分:1)
即使你的问题含糊不清,从你的例子来看,你真正想要的是两个数组的并集,首先是较小数组的元素,然后是更大数组的唯一元素。此数组末尾的订单不变。
以下代码实现了示例的结果:
let combined = array2 + array1.filter{array2.index(of: $0) == nil}
答案 1 :(得分:1)
您尚未定义希望如何对array1
中的元素进行排序,而不是array2
中的元素。此解决方案假定您希望按其数值对这些未找到的元素进行排序:
var array1 = [100, 40, 10, 50, 30, 20, 90, 70]
var array2 = [50, 20, 100, 10, 30]
array1.sort {
let index0 = array2.index(of: $0)
let index1 = array2.index(of: $1)
switch (index0, index1) {
case (nil, nil):
return $0 < $1
case (nil, _):
return false
case (_, nil):
return true
default:
return index0! < index1!
}
}
print(array1) // [50, 20, 100, 10, 30, 40, 70, 90]
// ^ order not defined in array2