代码之家  ›  专栏  ›  技术社区  ›  Pak Ho Cheung

根据另一个数组对数组进行排序,swift

  •  2
  • Pak Ho Cheung  · 技术社区  · 10 年前

    我想知道是否有任何内置函数可以根据另一个数组对数组进行排序。例如:根据testIntArray对testStringArray进行排序

    var testStringArray = ["a", "b", "c", "d", "e"] var testIntArray = [21, 3, 43, 5, 1]

    函数之后,testStringArray将是

    testIntArray.sort // [1, 3, 5, 21, 43]
    testStringArray // ["e", "b", "d", "a", "c"]
    
    1 回复  |  直到 10 年前
        1
  •  3
  •   Eendje    10 年前
    var array1 = ["a", "b", "c", "d", "e"]
    var array2 = [21, 3, 43, 5, 1]
    
    let sorted = zip(array1, array2).sort { $0.1 < $1.1 }
    
    array1 = sorted.map { $0.0 }
    array2 = sorted.map { $0.1 }
    
    print(array1) // ["e", "b", "d", "a", "c"]
    print(array2) // [1, 3, 5, 21, 43]
    

    像这样吗?我觉得可以做得更好。。。

    编辑:

    这感觉不太好。。。

    zip(array1, array2).sort { $0.1 < $1.1 }.forEach {
        array1.removeAtIndex(array1.indexOf($0.0)!)
        array1.insert($0.0, atIndex: array1.count)
    
        array2.removeAtIndex(array2.indexOf($0.1)!)
        array2.insert($0.1, atIndex: array2.count)
    }
    
    print(array1) // ["e", "b", "d", "a", "c"]
    print(array2) // [1, 3, 5, 21, 43]
    
    推荐文章