2015-09-03 60 views

回答

4

您可以使用地图的方法来你的元素转换为的NSString和访问它的doubleValue财产,并用减少方法结合起来,总结所产生的双阵列如下:

let stringArray = ["1.9","2.7","3.1","4.5","5.0"] 
let doubleArray = stringArray.map{ NSString(string: $0).doubleValue } 
let arraySum = doubleArray.reduce(0, combine: +) 

println(arraySum) // 17.2 

更新: 的Xcode 7.1.1•斯威夫特2.1

您可以使用双(字符串:)初始化器:

let stringArray = ["1.9","2.7","3.1","4.5","5.0"] 
let doubleArray = stringArray.flatMap{ Double($0) } 
let arraySum = doubleArray.reduce(0, combine: +) 

print(arraySum) // 17.2 
+2

仅有代码的答案不是很有帮助。请包括一些解释! – jtbandes

0

这里是一个答案,在雨燕2.0的你问题的第一部分:

我有我想转换到双字符串数组。然后我想将数组中的每个项目一起添加并获得总和。

let myStrings = ["2", "3","5.6", "4", "6"] 

let doubles = myStrings.map { (s : String) -> Double in 
    if let d = Double(s){ 
    return d 
    } 
    return 0.0 
} 

let sum = doubles.reduce(0.0, combine: {(sum: Double, item:Double) ->Double in 
      return sum + item 
}) 
1

循环通过阵列, 对于每个字串,转换字符串使用加倍:

Double(string:String) 

然后,每个添加到帐簿

var strings:[String] = ["1.3", "1", "8", "5", "bad number"] 

var tally = 0.0 
for eachString in strings{ 
    // Convert each string to Double 

    if let num = Double(eachString) { //Double(String) returns an optional. 
     tally += num 
    } else { 
     print("Error converting to Double") 
    } 
    // Another way to convert if you don't need error handling 
    // NSString.doubleValue will just return 0.0 on a bad string.  
    // let num=(eachString as NSString).doubleValue 
    // tally += num 

} 
print(tally) 
1

仅有map(迭代并将数组中的每个值)将数组中的所有值写入Double,然后将reduce a将Double的值与起始值0和闭包(在您的情况下,它只是一个运算符)+

reduce通过递归地应用所提供的闭包,将元素的集合降至单个值。

let stringDoubles = ["2.9","3.1","1.7","9.5","5.6"] 
let sum = stringDoubles.map { Double($0)! }.reduce(0, combine: +) 
print(sum) // "22.8". If start value was, for example, 10, print(sum) => "32.8" 
相关问题