我想遍历array
中的所有项目,然后更改所有字符串。然后,我想用新字符串对数组进行排序。
更具体地说,我有一个数组[“ 1,8”,“ 3,5”,“ 2,5”,“ 4”],并且想要将逗号更改为点并进行排序,例如[1.8、3.5、2.5、4 ]
如何通过使用map
和sorted
实现这一目标?
答案 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)