반응형
값의 배열에 루비 해시
나는 이것을 가지고있다:
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)
참고 URL : https://stackoverflow.com/questions/9560335/ruby-hash-to-array-of-values
반응형
'program story' 카테고리의 다른 글
std :: string을 LPCSTR로 변환하는 방법? (0) | 2020.08.03 |
---|---|
사용자가 소프트 키보드를 닫았을 때 감지 (0) | 2020.08.03 |
스위프트 4에서 열거 형 Decodable을 어떻게 만듭니 까? (0) | 2020.08.03 |
내 자식 저장소에서 참조되지 않은 얼룩을 제거하는 방법 (0) | 2020.08.03 |
iOS iPhone X, iPhone 6 plus, iPhone 6, iPhone 5, iPhone 4를 매크로로 감지하는 방법은 무엇입니까? (0) | 2020.08.03 |