我正在编写测试用例以比较两个哈希。 那里的类名是相同的,即哈希。
LeaveType
这可以通过将任何哈希的键修改为to_sym来完成。
但是我敢肯定,有另一种比较方式。
答案 0 :(得分:1)
1。象征钥匙
这些哈希不相等,因为密钥不相等。如果要比较值,则无论键是字符串还是符号,都可以使用to_sym
转换键。 (请注意,这不会转换嵌套键)。
first_hash.transform_keys(&:to_sym) == second_hash.transform_keys(&:to_sym)
2。比较为JSON(不推荐)
我不推荐这样做,但是由于从技术上讲是可行的,因此出于娱乐和参考目的,在此添加了它。
执行此操作的另一种方法是检查JSON表示形式是否相同。它可能会更慢,并且要求每个哈希中的键必须具有相同的顺序。
require 'json'
first_hash.to_json == second_hash.to_json
答案 1 :(得分:0)
与排序无关的比较:
h1, h2 = {"first_name" => "Vikas", "last_name" => "Prasad" },
{first_name: "Vikas", last_name: "Prasad"}
[h1, h2].
map(&:sort).
reduce(&:zip).
flat_map do |(k1, v1), (k2, v2)|
[k1.to_s == k2.to_s] && [v1 == v2]
end.reduce(&:&)