在ruby哈希中填充/默认

时间:2013-01-16 10:54:32

标签: ruby arrays

我从Hash中获得了这个功能,它在我的Javascript中运行得非常出色。除了一件事,只发生在一些事情上。结果如下:

[[500,400,300], [650,300], [500,400,300]]

您可以在第二个成员中看到该数组只有2个成员。我该如何填补这一点,以便任何缺失的成员都是0.所以这将会到来。

[[500,400,300], [650,300,0], [500,400,300]]

我尝试过使用默认方法但不起作用。

使用此代码创建此哈希:

data = Hash.new { |hash, key| hash[key] = [] }

在一个坚果壳中,我希望所有阵列均匀,并且放置0以使它们均匀。一直在研究这个问题。有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

def addpadding(data, length)
  data.each do |subarray|
    subarray.fill(0, subarray.length...length)
  end
end

您需要为方法提供二维数组和所需的length(例如3),它会将子数组填充到给定的长度。

答案 1 :(得分:0)

以下代码可以使用

a = [[500,400,300], [650,300], [500,400,300]].each {|e| e << 0 if e.count < 3}
#=> [[500, 400, 300], [650, 300, 0], [500, 400, 300]]