我正在尝试在循环中创建一个哈希对象,但是当我试图在循环中添加一个对象时却出现错误。
我的代码非常简单:
hash_data = b.map do |el|
{ y: el[compare], label: "rain_fall_type1" }
{ y: el[rain_fall_type], label: compare }
end
这段代码给了我这个结果:
[
{
y: 45.34,
label: "Land_Area"
},
{
y: 45.23,
label: "Land_Area"
}
]
当我这样添加逗号时:
hash_data = b.map do |el|
{ y: el[compare], label: "rain_fall_type1" },
{ y: el[rain_fall_type], label: "Land_Area" }
end
我遇到语法错误,我想要这种类型的结果:
[
{
y: 45.34,
label: "rain_fall_type1"
},
{
y: 46.23,
label: "Land_Area"
}
]
如何生成这样的结果。
答案 0 :(得分:0)
hash_data = b.map do |el|
{ y: el[compare], label: "rain_fall_type1" }
{ y: el[rain_fall_type], label: compare }
end
此映射块不会导致两个哈希。它包含两个不同的语句。第一个创建哈希并将其丢弃。第二个创建哈希,因为它是最后一个表达式,所以它从map块返回。第一条语句什么也不做。
如果要从地图块或其他任何对象返回多个散列,则必须将它们包装在另一个对象(如数组)中。
hash_data = b.map do |el|
[
{ y: el[compare], label: "rain_fall_type1" },
{ y: el[rain_fall_type], label: compare }
]
end
答案 1 :(得分:0)
您可以通过以下方式获得预期的结果
hash_data = orders.map do |el|
[{ y: el[compare], label: "rain_fall_type1" }, { y: el[rain_fall_type], label: "Land_Area" }]
end
hash_data.flatten
,如果您希望它们成对出现,则
hash_data.flatten.each_slice(2).to_a