2016-10-23 8 views
-2

文字列(250 == "250")と等しい場合、2つのハッシュ値とカウント値を等しく比較するにはどうすればよいですか?例えばRubyハッシュ比較一致数と文字列

、私はこれらのハッシュが等しいと考えることにしたい。

hash1 = {a: "3", b: "2"} 
hash2 = {a: 3, b: 2} 

ハッシュは文字列値でハッシュを返しているXMLパーサから来ます。

+3

入力と出力のサンプルを提供できますか? – Ursus

+1

あなたの質問に情報を入れ、適切にフォーマットしてください。変更された内容を知ることができるので、「編集」タグまたは「更新」タグを使用しないでください。あなたが試したことを示すことが重要であることを尋ねるとき。私たちはあなたのコードを修正するのを助けてくれることをうれしく思いますが、あなたにコードを書くように頼んでもうまく行きません。リンク先のページ「[mcve]」「スタックオーバーフローユーザーの研究努力の程度」(http://meta.stackoverflow.com/q/261592)を含む「[ask]」をお読みください。 –

+0

入力は上記の例では2つのハッシュです。 "3" == 3は '0 'を返します。 –

答えて

0

文字列値を持つハッシュを整数値のハッシュに変換して比較する必要があります。 Ruby 2.1以上を使用している場合は、hash1から直接マップし、結果から新しいハッシュを作成することができます:

new_hash = hash1.map { |k, v| [k, v.to_i] }.to_h 
new_hash == hash2 ? 1 : 0 
=> 1 
+0

回答ありがとうございますが、int値だけを持っていないとどうなりますか?たとえば、次のようになります。 {{=> "3"、B => 3.14、 B => "3.14" => "FOO" Cに等しくなるように、 C => "FOO" => 3 }} mapがfooと3,14をintに変換しようとするとどうなりますか? –

+0

{ a => "3"、 b => "3.14"、c => "foo" } –

+0

このサイトはまあまあです...コメントをどのように編集しますか? は答えてくれてありがとうしかし、私たちは例えばだけint型の値、持っていない場合: '{ を=> "3"、 B => "3.14"、 C => "foo" という }' ' マップはintにfooと-3,14-を変換しようとしたときに何が起こる{ => 3 、 B => 3.14、 C => "FOO"} ': が等しくなるように? –