【发布时间】:2023-03-03 00:05:01
【问题描述】:
我编写这段代码是为了生成一个哈希,其中键是类别(水果或蔬菜),值是该类别中的项目数组。
food = ["fruit:orange", "fruit:apple", "fruit:cherry", "veg:pea", "veg:parsley"]
food.each_with_object(Hash.new([])) do |food_item, hash|
category, value = food_item.split(":")
hash[category] = hash[category].push(value)
end
这是我得到的:
# =>
{
"fruit" => ["orange", "apple", "cherry", "pea", "parsley"],
"veg" => ["orange", "apple", "cherry", "pea", "parsley"]
}
但我预料到了:
{
"fruit"=> ["orange", "apple", "cherry"],
"veg" => ["pea", "parsley"]
}
第一次迭代应该产生{ fruit: ["orange"] },第二次产生{ fruit: ["orange", "apple"] }等等......第四次迭代应该产生veg键,然后继续。蔬菜如何最终被推到水果阵列中,反之亦然?
【问题讨论】:
-
您的屏幕截图中的结果与您问题前面所述的结果不符。
标签: ruby arrays iteration hash