2016-09-18 99 views
2

所以这只是下面的一些类似的示例代码。我试图把所有人的身高都加在一起,这样我就可以得到平均水平。我似乎无法弄清楚如何用一系列词典来做到这一点。我也使用Xcode 3.字典中的值总和 - Swift

let people = [ 
    [ 
    "name": "John Doe", 
    "sex": "Male", 
    "height": "183.0" 
    ], 
    [ 
    "name": "Jane Doe", 
    "sex": "Female", 
    "height": "162.0" 
    ], 
    [ 
    "name": "Joe Doe", 
    "sex": "Male", 
    "height": "179.0" 
    ], 
    [ 
    "name": "Jill Doe", 
    "sex": "Female", 
    "height": "167.0" 
    ], 
] 

下面的代码似乎只是创建新的空数组。

var zero = 0.0 
var peopleHeights = Double(player["height"]!) 
var totalHeights = zero += peopleHeights! 

下面的代码双打所以不是我所期待的每个单独的值。

var zero = 0.0 
var peopleHeights = Double(player["height"]!) 
var totalHeights = peopleHeights.map {$0 + $0} 

在下面的代码中,我得到了响应:Double类型的值没有成员reduce。

var peopleHeights = Double(player["height"]!) 
var totalHeights = peopleHeights.reduce(0.0,combine: +) 

任何帮助,将不胜感激。

+0

'player'是一个数组,你期望'player [“height”]'做什么? – njzk2

回答

1

你也只是在你的字典的数组迭代。

var totalHeight: Double = Double() 

for person in people 
{ 
    totalHeight += Double(person["height"]!)! 
} 
6

您需要使用map来提取每个人的身高。然后,你可以包含高度名单上应用reduce

你应该检查只能在展开值map+作品使用flatMap

people.flatMap({ Double($0["height"]!) }).reduce(0, +) 
+2

你不想在Swift 3中使用'combine:'。另外,你可能想要考虑使用'?? “”而不是'!'来安全地解开高度字符串 – vacawama