作者:柿饼VIP | 来源:互联网 | 2022-12-03 09:55
考虑以下2D数组:
let array = [
[11, 2, 4],
[4, 5, 6],
[10, 8, -12]
]
我想得到的是对角线的总和:
如firstDiagnal
:11 + 5 +( - 12)= 4
如secondDiagnal
:4 + 5 + 10 = 19
我可以使用标准for-in
循环来实现它:
var firstDiagnal = 0
var secOndDiagnal= 0
for i in 0..
但是,如果我们尝试使用高阶函数会是什么呢?如map
和reduce
?
1> Rob Napier..:
要获得第一笔总和,您需要第i行的第i个元素:
let firstDiag = array.enumerated().map { $1[$0] }.reduce(0, +)
要获得第二笔金额,您需要相同的东西,但列相反:
let secOndDiag= array.enumerated().map { $1.reversed()[$0] }.reduce(0, +)