在Swift中

时间:2018-08-16 10:37:19

标签: ios swift functional-programming

我想遍历array中的所有项目,然后更改所有字符串。然后,我想用新字符串对数组进行排序。

更具体地说,我有一个数组[“ 1,8”,“ 3,5”,“ 2,5”,“ 4”],并且想要将逗号更改为点并进行排序,例如[1.8、3.5、2.5、4 ]

如何通过使用mapsorted实现这一目标?

2 个答案:

答案 0 :(得分:3)

在将字符串转换为数字然后对结果数组进行排序时,可以将flatMap(_:)replacingOccurrences(of:with:)一起使用来忽略nil结果。

let array = ["1,8", "3,5", "2,5", "4"]
let sortedArray = array.flatMap({ Double($0.replacingOccurrences(of: ",", with: ".")) }).sorted()
print(sortedArray) //[1.8, 2.5, 3.5, 4.0]

注意:如果您的Swift版本是4.1或更高版本,请使用compactMap(_:),因为flatMap在Swift 4.1中已弃用。

let sortedArray = array.compactMap({ Double($0.replacingOccurrences(of: ",", with: ".")) }).sorted()

答案 1 :(得分:1)

var array = ["1,8", "3,5", "2,5", "4"]
var sortedArray = array.map{Double($0.replacingOccurrences(of: ",", with: "."))!}.sorted(by: {$0 < $1})
print(sortedArray)