-1

私のJavascriptで見事に機能するハッシュからのこの反発があります。一部でのみ発生する1つのことを除いて。結果は次のとおりです。

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

2番目のメンバーでは、配列の長さが2メンバーしかないことがわかります。不足しているメンバーが0になるように、どうすればそれを埋めることができますか。

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

デフォルトの方法を使用してみましたが、機能しません。

このコードを使用してこのハッシュを取得しています:

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

一言で言えば、私はすべての配列を均等にし、0を均等に配置したいと思います。何年もの間これを研究してきました。誰かアイデアはありますか?

4

2 に答える 2

1

次のようなものを使用できます。

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

2 次元配列と必要なlength(たとえば 3) をメソッドに提供する必要があり、指定された長さまでサブ配列をパディングします。

于 2013-01-16T11:03:40.713 に答える
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]]
于 2013-01-16T11:02:18.130 に答える