数组 – 如何使用高阶函数得到对角线的总和?

前端之家收集整理的这篇文章主要介绍了数组 – 如何使用高阶函数得到对角线的总和?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
考虑以下2D数组:
  1. let array = [
  2. [11,2,4],[4,5,6],[10,8,-12]
  3. ]

我想得到的是对角线的总和:

>作为firstDiagnal:11 5(-12)= 4
>作为secondDiagnal:4 5 10 = 19

我可以使用标准的for-in循环来实现它:

  1. var firstDiagnal = 0
  2. var secondDiagnal = 0
  3.  
  4. for i in 0..<array.count {
  5. firstDiagnal += array[i][i]
  6. secondDiagnal += array[i][array[i].count - 1 - i]
  7. }
  8.  
  9. print(firstDiagnal)
  10. print(secondDiagnal)

但是,如果我们尝试使用高阶函数会是什么呢?如地图和减少?

要获得第一笔总和,您需要第i行的第i个元素:
  1. let firstDiag = array.enumerated().map { $1[$0] }.reduce(0,+)

要获得第二笔金额,您需要相同的东西,但列相反:

  1. let secondDiag = array.enumerated().map { $1.reversed()[$0] }.reduce(0,+)

猜你在找的Swift相关文章