2016-01-22 131 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

雅。你的比我的簡單得多。感謝您的幫助 –

相關問題