[ruby] 값 배열에 대한 Ruby 해시

나는 이것을 가지고있다:

hash  = { "a"=>["a", "b", "c"], "b"=>["b", "c"] } 

그리고 나는 이것을 얻고 싶다. [["a","b","c"],["b","c"]]

이것은 작동하는 것처럼 보이지만 작동하지 않습니다.

hash.each{|key,value| value}
=> {"a"=>["a", "b", "c"], "b"=>["b", "c"]} 

어떤 제안?



답변

또한 조금 더 간단합니다 ….

>> hash = { "a"=>["a", "b", "c"], "b"=>["b", "c"] }
=> {"a"=>["a", "b", "c"], "b"=>["b", "c"]}
>> hash.values
=> [["a", "b", "c"], ["b", "c"]]

여기 루비 문서


답변

다음을 사용합니다.

hash.map { |key, value| value }


답변

hash.collect { |k, v| v }
#returns [["a", "b", "c"], ["b", "c"]] 

Enumerable#collect블록을 취하고 열거 형의 모든 요소에서 블록을 한 번 실행 한 결과의 배열을 반환합니다. 따라서이 코드는 키를 무시하고 모든 값의 배열을 반환합니다.

Enumerable모듈은 꽤 굉장합니다. 이를 잘 알면 많은 시간과 코드를 절약 할 수 있습니다.


답변

hash  = { :a => ["a", "b", "c"], :b => ["b", "c"] }
hash.values #=> [["a","b","c"],["b","c"]]


답변

간단합니다.

hash.values
#=> [["a", "b", "c"], ["b", "c"]]

이것은 해시의 값으로 채워진 새 배열을 반환합니다.

새 어레이를 저장하려면

array_of_values = hash.values
#=> [["a", "b", "c"], ["b", "c"]]

array_of_values
 #=> [["a", "b", "c"], ["b", "c"]]


답변

이것도 있습니다 :

hash = { foo: "bar", baz: "qux" }
hash.map(&:last) #=> ["bar", "qux"]

작동하는 이유 :

&호출 to_proc객체에 상기 방법으로 블록으로 전달한다.

something {|i| i.foo }
something(&:foo)


답변