【发布时间】:2019-12-07 09:48:03
【问题描述】:
我有像 List> 这样的数据结构:
记录 = [{"1"=>[{"account_id"=>"1", "v"=>"1"}, {"account_id"=>"1", "v"=>"2"}, {"account_id"=>"1", "v"=>"3"}, {"account_id"=>"1", "v"=>"4"]}, {"2"=>[{"account_id"=>"2", "v"=>"4"}, {"account_id"=>"2", "v"=>"4"}, {"account_id"=>"2", "v"=>"4"}]}]
我不关心 hashmap 中的键(在本例中为“1”和“2”),并希望按组迭代 map 的值:
records.each do |account_map|
account_record = account_map.values[0] # This line
for i in (0 ... account_record.size - 1)
#do something and update account_record[i]
end
end
end
如何将account_record = account_map.values[0] 合并到each 循环中或使其看起来更好。谢谢
【问题讨论】:
-
不确定你在问什么。你要的是
account_map.values.each { |account| ... }吗? -
each最初将records的第一个元素,即{"1"=>[{"account_id"=>"1", "v"=>"1"}传递给块,并将块变量account_map设置为等于该哈希值。然后计算account_map.values,即[[{"account_id"=>"1", "v"=>"1"}, ... , {"account_id"=>"1", "v"=>"4"]]。请注意,这是该散列的所有值的数组,它只是一个,即散列数组。然后计算account_map.values[0],这是散列数组,它是records的第一个元素的散列中键1的值... -
...然后你想对那个散列数组做一些事情,但是
records的第二个元素,它是一个具有等于"2"的单个键的散列,永远不会被处理。这是你的意图吗?你最好用语言解释你想做什么。例如,“给定一个哈希数组record,其中每个哈希都有一个键,其值是一个哈希数组,我希望......”。 -
请修正,
records不是一个有效的对象。有问题,例如这里{"account_id"=>"1", "v"=>"4"]}。也许您还想添加预期的结果。