【问题标题】:How do I sum the elements of the inner array? (Ruby) [closed]如何对内部数组的元素求和? (红宝石)[关闭]
【发布时间】:2020-12-31 10:53:00
【问题描述】:

假设我有一个这样的数组,

a = [[1, 2], [1, 4], [1, 8], [1, 16]]

如何在 Ruby 中将以上内容转换为以下内容?

a = [3, 5, 9, 17]

提前谢谢!

【问题讨论】:

  • 请在您的问题中显示您迄今为止尝试过的代码。谢谢。
  • 对不起,我只是一个初学者。实在想不通,所以才问。
  • 您遇到问题的代码是什么?你的代码有什么问题?您收到错误消息吗?错误信息是什么?你得到的结果不是你期望的结果吗?你期望什么结果,为什么,你得到的结果是什么,两者有什么不同?您正在观察的行为不是期望的行为吗?期望的行为是什么,为什么,观察到的行为是什么,它们有何不同?请提供minimal reproducible example。请注意Stack Overflow不是写代码服务,你需要努力!
  • 是的,会更加谨慎和具体

标签: arrays ruby sum mapping inject


【解决方案1】:

我会选择:

a = [[1, 2], [1, 4], [1, 8], [1, 16]]
a.map!(&:sum)
#=> [3, 5, 9, 17]

【讨论】:

  • 这应该是公认的最简洁明了的答案。
【解决方案2】:

方法一:
使用map,在其中添加内部 2 元素数组的 2 个元素。 { ... } 块返回最后评估的表达式,即x + y

a = [[1, 2], [1, 4], [1, 8], [1, 16]]
a = a.map{ |x, y| x + y }
puts a.inspect
# [3, 5, 9, 17]

方法二:
使用map,然后sum内部数组的所有元素,并返回总和:

a = [[1, 2], [1, 4], [1, 8], [1, 16]]
a = a.map{ |el| el.sum }
puts a.inspect
# [3, 5, 9, 17]

【讨论】:

  • 非常感谢!!我刚刚找到一个看起来像这样的:[[1,2,3],[1,1,1]].map{|a| a.inject(:+)} # => [6, 3] 。不知道你会怎么想。
  • @Jacin.Y 您可以稍微修改您显示的inject 语句,这也可以。随意发布它,即使是“原样”,作为你尝试过的东西,无论这是否给出了正确的结果。 SO 用户喜欢查看先前工作或研究的证据。错误的解决方案总比没有解决方案好。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2011-01-15
  • 1970-01-01
  • 2016-06-28
相关资源
最近更新 更多