Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何根据swift中的其他阵列位置对一个阵列进行排序?_Arrays_Swift_Sorting - Fatal编程技术网

Arrays 如何根据swift中的其他阵列位置对一个阵列进行排序?

Arrays 如何根据swift中的其他阵列位置对一个阵列进行排序?,arrays,swift,sorting,Arrays,Swift,Sorting,在Swift中,假设我有两个数组: var array1: [Int] = [100, 40, 10, 50, 30, 20, 90, 70] var array2: [Int] = [50, 20, 100, 10, 30] 我想把我的aary1按照array2分类 所以我的array1的最终输出将是://array1=[50,20,100,10,30, 40、90、70] 尽管你的问题措辞含糊不清,但从你的例子来看,你真正想要的是两个数组的并集,较小数组的元素排在第一位,较大数组的唯一元素

在Swift中,假设我有两个数组:

var array1: [Int] = [100, 40, 10, 50, 30, 20, 90, 70]
var array2: [Int] = [50, 20, 100, 10, 30]
我想把我的aary1按照array2分类

所以我的array1的最终输出将是://array1=[50,20,100,10,30, 40、90、70]


尽管你的问题措辞含糊不清,但从你的例子来看,你真正想要的是两个数组的并集,较小数组的元素排在第一位,较大数组的唯一元素排在第二位,顺序不变,排在这个数组的末尾

以下代码实现了示例的结果:

let combined = array2 + array1.filter{array2.index(of: $0) == nil}

您尚未定义如何对
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
var数组1=[100,40,10,50,30,20,90,70]
变量array2=[50,20,100,10,30]
排序{
设index0=array2.index(of:$0)
设index1=array2.索引(共:$1)
开关(index0,index1){
案件(无,无):
返回$0<$1
情况(无):
返回错误
情况(无):
返回真值
违约:
返回index0!
它确实有效,因为它保留了两个数组的唯一元素。问题没有说明如果没有一个数组是另一个数组的子集,那么排序应该是什么,所以在本例中,它们只是连接在一起。@LucaAngeletti这是对实际排序的人的一般性评论,因此我没有标记您。或的可能重复