반응형
값 배열에 대한 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.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 = { :a => ["a", "b", "c"], :b => ["b", "c"] }
hash.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
반응형
'source' 카테고리의 다른 글
AWS S3: 액세스하려는 버킷은 지정된 끝점을 사용하여 주소를 지정해야 합니다. (0) | 2023.06.03 |
---|---|
일정관리 응용프로그램에서 반복 이벤트를 모델링하는 가장 좋은 방법은 무엇입니까? (0) | 2023.06.03 |
WPF 텍스트 블록의 자동 수직 스크롤 막대? (0) | 2023.06.03 |
TCP를 통해 ADB로 Android에 연결하려면 어떻게 해야 합니까? (0) | 2023.06.03 |
조직의 정책으로 인해 이 작업을 완료할 수 없습니다. - Microsoft Office (0) | 2023.05.29 |