根据另一个数组排序数组,swift

时间:2016-01-22 23:39:54

标签: arrays swift function sorting

我想知道是否有任何内置函数我可以根据另一个数组对数组进行排序。例如:根据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 个答案:

答案 0 :(得分:2)

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]