配列の一部のハッシュがパスa.bまたは{"a"=>{"b"=>"someanswer"}}
しか持っていないと仮定して、以下のコードをdieingせずに最後の要素を表示するのに十分なほど堅牢にするにはどうすればよいですか?Ruby:パスからのハッシュをより堅牢にする方法は?
path = ("a.b.c.d")
arrayOfHashes.collect {|hash| path.split(".").inject(hash) { |hash, key| hash[key] }}
配列の一部のハッシュがパスa.bまたは{"a"=>{"b"=>"someanswer"}}
しか持っていないと仮定して、以下のコードをdieingせずに最後の要素を表示するのに十分なほど堅牢にするにはどうすればよいですか?Ruby:パスからのハッシュをより堅牢にする方法は?
path = ("a.b.c.d")
arrayOfHashes.collect {|hash| path.split(".").inject(hash) { |hash, key| hash[key] }}
仕様が完全ではありません。そんな感じ?
arrayOfHashes = [{"a" => {"b" => "hello"}}, {"a" => {"b" => {"c" => {"d" => "response"}}}}]
path = "a.b.c.d"
arrayOfHashes.map do |hash|
path.split(".").inject(hash) do |acc, key|
acc.is_a?(Hash) ? acc[key] : acc
end
end
#=> ["hello", "response"]
申し訳ありません私は、nilを表示するのではなく、すべての場合に最後の要素を表示するつもりでした。 '#=> [" aa "、" response "]' –
が更新されました。これでしょうか? – tokland
パーフェクト、スマート、ありがとう! –
手元にある最後の要素を表示するか、 'a.b.c.d'を表示して到達できない場合は 'nil'を返しますか? –
手元にある最後の要素 –