2016-01-22 258 views
2

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

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

功能后排序testStringArray,testStringArray将

testIntArray.sort // [1, 3, 5, 21, 43] 
testStringArray // ["e", "b", "d", "a", "c"] 

回答

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] 
+0

是啊。我想找到最简单的方法来排序它,因为我的方法是定义一个新函数根据第一个数组排序第二个数组。 –

+0

那么,我的回答很简单。这只是我觉得我可以多切一步:) – Eendje

+0

雅。你的比我的简单得多。感谢您的帮助 –

相关问题