排除潜在零项的组中数组的总和

Spy*_*ros 1 ruby arrays

我有一个像这样的数组:

[1, 2, 3, 4, 5, nil, 7, 8, 9, nil, nil, 12]
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到这些数字总和的数组,以 4 为一组,这样当遇到 nil 时,它被视为零?

那么结果将是:

[10, 20, 21]
Run Code Online (Sandbox Code Playgroud)

mar*_*ets 8

像这样的东西应该有效(可能有更有效的解决方案):

array = [1, 2, 3, 4, 5, nil, 7, 8, 9, nil, nil, 12]

array.each_slice(4).map { |slice| slice.sum(&:to_i) }
#=> [10, 20, 21]
Run Code Online (Sandbox Code Playgroud)

  • 建议:`slice.compact.sum` (2认同)