在Swift3中对10个以上的数字进行排序

时间:2017-03-12 17:48:46

标签: arrays sorting swift3

我尝试用数字对字符串数组进行排序,但我得不到正确的顺序。

print(alleTouren) // ["1", "3", "2", "5", "15", "4"]

alleTouren = alleTouren.sorted(by: {$0 < $1})                               

print(alleTouren)  // ["1", "15", "2", "3", "4", "5"]

我也尝试了 alleTouren.sort(by:&lt;) alleTouren.sort(),但我总是过早地回到15岁。我做错了什么?

2 个答案:

答案 0 :(得分:0)

问题是你似乎在说你要对它们进行排序,好像它们是数字一样,但它们是字符串,所以“1”,“15”,“2”......是正确的。您可以尝试将$ 0和$ 1转换为整数并进行比较。

我不是Swift专家,但这似乎有效:

alleTouren = alleTouren.sorted{let s0 = Int($0)
let s1 = Int($1)
return s0! < s1!}

答案 1 :(得分:0)

由于所有字符串都可以转换为Int,因此将转换添加到闭包中。

var alleTouren = ["1", "3", "2", "5", "15", "4"]
alleTouren = alleTouren.sorted(by: { Int($0)! < Int($1)! })

或者使用compare的{​​{1}}函数和String选项,这可能更有效。

numeric