按照另一个数组快速排序数组 [英] sort a array according to another array, swift
本文介绍了按照另一个数组快速排序数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道是否有任何内置函数可以根据另一个数组对数组进行排序。例如:根据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]
解决方案
var array1 = [a,b,c,d,e]
var array2 = [21, 3,43,5,1]
let sorted = zip(array1,array2).sort {$ 0.1< $ 1.1
$ b $ 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 < ($ 0.0,atIndex:array1.count)
array2.removeAtIndex(array2)$ for $ {
array1.removeAtIndex .indexOf($ 0.1)!)
array2.insert($ 0.1,atIndex:array2.count)
}
print(array1)// [e,b ,d,a,c]
print(array2)// [1,3,5,21,43]
I am wondering is there any build-in function I can sort a array according to another array. For example: sort testStringArray according to testIntArray
var testStringArray = ["a", "b", "c", "d", "e"]
var testIntArray = [21, 3, 43, 5, 1]
After the function, testStringArray will be
testIntArray.sort // [1, 3, 5, 21, 43]
testStringArray // ["e", "b", "d", "a", "c"]
解决方案
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]
Something like this? I feel like it can be done better...
EDIT:
This doesn't feel like it's much better...
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]
这篇关于按照另一个数组快速排序数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文