比较散列阵列并打印预期的&实际结果 [英] compare array of hashes and print expected & actual results

查看:111
本文介绍了比较散列阵列并打印预期的&实际结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2个哈希数组:

  actual = [{column_name=>NONINTERESTINCOME,column_data_type =>NUMBER},
{column_name=>NONINTERESTEXPENSE,column_data_type=>VARCHAR},
{column_name=>TRANSACTIONDATE, column_data_type=>TIMESTAMP},
{column_name=>UPDATEDATE,column_data_type=>TIMESTAMP}]
expected = [{column_name=> ;NONINTERESTINCOME,column_data_type=>NUMBER},
{column_name=>NONINTERESTEXPENSE,column_data_type=>NUMBER},
{ =>TRANSACTIONDATE,column_data_type=>NUMBER},
{column_name=>UPDATEDATE,column_data_type=>TIMESTAMP}] code>

我需要比较这两个哈希值并找出 column_data_type

来比较我们可以直接使用:

  diff = actual  - 预计

这会打印输出为:

  {column_name=>NONINTERESTEXPENSE,column_data_type=>VARCHAR} 
{column_name=>TRANSACTIONDATE,column_data_type=>TIMESTAMP}

我的预期输出是结果中我想打印实际数据类型和期望数据类型,表示实际和预期的哈希数组中缺少`column_name'的数据类型,如下所示:

  {column_name=>NONINTERESTEXPENSE,expected_column_data_type=>NUMBER,actual_column_data_type=> VARCHAR} 
{column_name=>TRANSACTIONDATE,expected_column_data_type=>NUMBER,actual_column_data_type=> TIMESTAMP}


解决方案

 (预期 - 实际)。 
concat(实际 - 预期)。
group_by {| column |列['column_name']}。
map do | name,(预计,实际)|
{
'column_name'=>名称,
'expected_column_data_type'=>预期['column_data_type'],
'actual_column_data_type'=> actual ['column_data_type'],
}
end


I have 2 array of hashes:

actual = [{"column_name"=>"NONINTERESTINCOME", "column_data_type"=>"NUMBER"},
 {"column_name"=>"NONINTERESTEXPENSE", "column_data_type"=>"VARCHAR"},
 {"column_name"=>"TRANSACTIONDATE", "column_data_type"=>"TIMESTAMP"},
 {"column_name"=>"UPDATEDATE", "column_data_type"=>"TIMESTAMP"}]
expected = [{"column_name"=>"NONINTERESTINCOME", "column_data_type"=>"NUMBER"},
 {"column_name"=>"NONINTERESTEXPENSE", "column_data_type"=>"NUMBER"},
 {"column_name"=>"TRANSACTIONDATE", "column_data_type"=>"NUMBER"},
 {"column_name"=>"UPDATEDATE", "column_data_type"=>"TIMESTAMP"}]

I need to compare these 2 hashes and find out the ones for which the column_data_type differs.

to compare we can directly use:

diff = actual -   expected

This will print the output as:

{"column_name"=>"NONINTERESTEXPENSE", "column_data_type"=>"VARCHAR"}
{"column_name"=>"TRANSACTIONDATE", "column_data_type"=>"TIMESTAMP"}

My expected output is that in the result i want to print the actual and expected datatype, means the datatypes for the missing `column_name' from both the actual and expected array of hashes, something like:

{"column_name"=>"NONINTERESTEXPENSE", "expected_column_data_type"=>"NUMBER", "actual_column_data_type" => "VARCHAR"}
{"column_name"=>"TRANSACTIONDATE", "expected_column_data_type"=>"NUMBER","actual_column_data_type" => "TIMESTAMP" }

解决方案

(expected - actual).
  concat(actual - expected).
  group_by { |column| column['column_name'] }.
  map do |name, (expected, actual)|
    {
      'column_name'               => name,
      'expected_column_data_type' => expected['column_data_type'],
      'actual_column_data_type'   => actual['column_data_type'],
    }
  end

这篇关于比较散列阵列并打印预期的&实际结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆