我尝试对每一行比较每个对应名称的fx值;因此,结果应该是:diff={"name"=>"XPT", "fx"=>"1.1315313597682419"}
或四舍五入,然后再进行比较_如果这样更容易的话:diff={"name"=>"XPT", "fx"=>"1.13153"}
到目前为止,我有一个TypeError(没有将String隐式转换为Integer),如下所示:
def compare_values
diff = {}
a = [{"src"=>"reportStack"},
{"name"=>"XPT", "fx"=>"1.1315313597682419"},
{"name"=>"XAU", "fx"=>"27.0165670831070071"},
{"name"=>"XAG", "fx"=>"8.4192241535397429"}]
b = [{"src"=>"reportOverflow"},
{"name"=>"XPT", "fx"=>"1.13163"},
{"name"=>"XAU", "fx"=>"27.0165670831070071"},
{"name"=>"XAG", "fx"=>"8.4192"}]
b.each do |b_row|
a.each do |a_row|
b.each do |k,v|
diff = k if a_row['name'].value == e_row['name'].value && a_row['fx'].value.to_f != a_row['fx'].value.to_f
end
end
end
end
有谁能给予我一个如何处理这种泡菜的建议吗?
1条答案
按热度按时间f2uvfpb91#
开始,我将reportStack(a)和reportOverflow(b)的数据结构简化为散列,其中键为
name
,值为fx
,这将允许我们比较键-值对,而不必迭代数组并检查每个值。然后,我将在report_stack上使用
.reject
,并在相应的report_overflow键上使用!nil?
、start_with?
和==
条件如果需要任何额外的比较逻辑,您应该能够轻松地更新
.reject
块中的条件。