什么是最简单(最好)的方法来找到一个数组的整数和在swift? 我有一个数组叫multiples我想知道这些倍数的和。
当前回答
用于对象数组中元素的和
self.rankDataModelArray.flatMap{$0.count}.reduce(0, +)
其他回答
用于对象数组中元素的和
self.rankDataModelArray.flatMap{$0.count}.reduce(0, +)
斯威夫特3
如果你有一个通用对象的数组,你想对一些对象属性求和,那么:
class A: NSObject {
var value = 0
init(value: Int) {
self.value = value
}
}
let array = [A(value: 2), A(value: 4)]
let sum = array.reduce(0, { $0 + $1.value })
// ^ ^
// $0=result $1=next A object
print(sum) // 6
尽管for-cycle的形式较短,但很多时候你可能更喜欢经典的for-cycle:
let array = [A(value: 2), A(value: 4)]
var sum = 0
array.forEach({ sum += $0.value})
// or
for element in array {
sum += element.value
}
斯威夫特3、4、5
使用减少:
let totalamount = yourTransactionsModelArray.reduce(0) { $0 + $1.amount}
老式的理解方法:
for (var i = 0; i < n; i++) {
sum = sum + Int(multiples[i])!
}
//where n =数组中元素的个数
这也是可行的:
let arr = [1,2,3,4,5,6,7,8,9,10]
var sumedArr = arr.reduce(0, combine: {$0 + $1})
print(sumedArr)
结果是:55
这是我能找到的最简单/最短的方法。
Swift 3和Swift 4:
let multiples = [...]
let sum = multiples.reduce(0, +)
print("Sum of Array is : ", sum)
斯威夫特2:
let multiples = [...]
sum = multiples.reduce(0, combine: +)
更多信息:
这使用了Array的reduce方法(这里有文档),该方法允许你“通过递归应用提供的闭包将元素集合减少到单个值”。我们给它0作为初始值,然后,本质上,闭包{$0 + $1}。当然,我们可以将其简化为一个加号,因为Swift就是这样运行的。