【发布时间】:2020-12-17 12:57:44
【问题描述】:
有两个哈希数组
actual = [{id: 1, text: "A", type: "X", state: "enabled"}, {id: 2, text: "B", type: "X", state: "enabled"}]
expected = [{text: "A", type: "X", state: "enabled"}]
我需要获取“预期”中未包含的所有哈希的 :id。必须使用三个键(文本、类型、状态)进行比较。在这种情况下
results = [{id: 2}]
目前我正在使用它,但它很长并且不适用于大型阵列。有没有更好的办法?
actuals = actuals.map{|a| a.slice(:text, :type, :state)}
expected = expected.map{|a| a.slice(:text, :type, :state)}
not_expected = actuals - expected
results = actuals.select{|actual|
not_expected.find{|n|
n[:text] == actual[:text] &&
n[:type] == actual[:type] &&
n[:state] == actual[:state]
}.present?
}
【问题讨论】:
标签: arrays ruby-on-rails ruby hash