2016-10-16 8 views
0

새 배열에 해시 값이 필요한 해시 배열이 있습니다. 해시의 배열은 몇 천 개가 넘는 것으로 이것을 좋아합니다.해시 배열을 배열로 변환

array = [{:code=>"404"}, {:code=>"302"}, {:code=>"200"}] 

저는 이것을 살펴 보려고했지만 해시를 변환하는 방법을 알아 냈습니다.

어떻게해야합니까? (현재 :code) 키의 이름 향후 변경 될 경우

+0

당신은 어떤 출력을 추가 할 수 해야한다? – jcm

+0

'array.flat_map {| h | h.values}' –

답변

1
a=[{:code=>"404"}, {:code=>"302"}, {:code=>"200"}] 
puts a.map{|x|x.values}.flatten.inspect 

출력

["404", "302", "200"] 
+0

이것을 사용하려고하면 값 부분에 대해 정의되지 않은 메소드가 생깁니다. 어떤 제안? – tbrent

+1

동일한 코드를 사용 했습니까? 내 코드를 실행하고 여기에 붙여 넣기 때문에 잘 동작합니다. 어떤 버전의 Ruby를 사용하고 있습니까? – Gopal

+0

나는 irb에서 그것을 시도하고 그것은 나를 위해 너무 일했다. 내 코드에서 뭔가 작동하지 않아야합니다. 나는 2.3.1을 사용하고있다. – tbrent

1
arr =[{:code=>"404"}, {:code=>"302"}, {:code=>"200"}] 

arr.map { |h| h[:code] } 
    #=> ["404", "302", "200"] 

또는 :

arr.map { |h| h.first.last } 
    #=> ["404", "302", "200"] 
+0

좋습니다! 열쇠가 같다는 사실을 나는 눈치 채지 못했다. 또한 h.first가 해시 키, 값을 배열로 변환한다는 것을 알지 못합니다. – Gopal

+0

@Gopal, 해시 요소 (키 - 값 쌍)가 열거 된 경우 항상 그렇습니다. 예를 들어,'{a : 1, b : 2} .each {| a | p a}'는 '[: a, 1]'그리고'[: b, 2]'를 출력합니다. –

+0

예, 열거 형과. first의 관계는 무엇입니까? .first가 key, value의 배열을 반환하는 이유는 무엇입니까? – Gopal

3
[{:code=>"404"}, {:code=>"302"}, {:code=>"200"}].flat_map(&:values) 
#⇒ ["404", "302", "200"]