2016-09-19 6 views
4

배열이 여러 개 있습니다. 특정 키/값에 대해 가장 높은 값을 찾고 해당 해시의 이름 값을 출력하고 싶습니다. 예를 들어, 각 학생에게 정보가 담긴 "학생"배열의 해시가 있습니다. 어떤 학생이 가장 높은 시험 점수를 받았고 그들의 이름을 출력하고 싶습니다. 아래의 배열에서 "Kate Saunders"가 가장 높은 테스트 점수를 얻었으므로 그녀의 이름을 인쇄하고 싶습니다.Ruby에서 해시 배열에서 가장 높은 값을 찾습니다.

어떤 도움이나 조언이 시작되었습니다. 크게 감사하겠습니다. 지금 당장 해키 작업이 있지만 더 좋은 방법이 있다는 것을 알고 있습니다. 나는 Ruby에 익숙하지 않고 그것을 좋아하지만, 이걸 보더라. 정말 고마워!!!

students = [ 
    { 
     name: "Mary Jones", 
     test_score: 80, 
     sport: "soccer" 
    }, 
    { 
     name: "Bob Kelly", 
     test_score: 95, 
     sport: "basketball" 
    }. 
    { 
     name: "Kate Saunders", 
     test_score: 99, 
     sport: "hockey" 
    }, 
    { 
     name: "Pete Dunst", 
     test_score: 88, 
     sport: "football" 
    } 
] 
+0

1. 지금까지 어떤 시도를 했습니까? 2. 당신이 이미 가지고있는 해킹 방법은 무엇입니까? 같은 코드를 추가하십시오. – acsrujan

+0

내 해킹 방법은 테스트 점수를 별도의 배열로 밀어 넣고 가장 높은 색인을 얻은 다음 students 배열의 해시 색인과 비교합니다. 꽤 못 생겼어. – AliZ

답변

7

당신은 @Bartek 알라 가장 높은 점수를 결정 max_by 방법

students = [ { name: "Mary Jones", test_score: 80, sport: "soccer" }, { name: "Bob Kelly", test_score: 95, sport: "basketball" }, { name: "Kate Saunders", test_score: 99, sport: "hockey" }, { name: "Pete Dunst", test_score: 88, sport: "football" } ] 

students.max_by{|k| k[:test_score] } 
#=> {:name=>"Kate Saunders", :test_score=>99, :sport=>"hockey"} 

students.max_by{|k| k[:test_score] }[:name] 
#=> "Kate Saunders" 
1
students = [ { name: "Mary Jones", test_score: 80, sport: "soccer" }, 
      { name: "Bob Kelly", test_score: 95, sport: "basketball" }, 
      { name: "Kate Saunders", test_score: 99, sport: "hockey" }, 
      { name: "Pete Dunst", test_score: 88, sport: "football" }, 
      { name: "Ima Hogg", test_score: 99, sport: "darts" } 
      ] 

를 사용할 수 있습니다.

max_score = students.max_by { |h| h[:test_score] }[:test_score] 
    #=> 99 

그런 다음 해당 학생이 어떤 점수를 받았는지 확인하십시오.

star_students = students.select { |h| h[:test_score] == max_score }. 
         map { |h| h[:name] } 
    #=> ["Kate Saunders", "Ima Hogg"] 

puts star_students 
    # Kate Saunders 
    # Ima Hogg 

이마의 아버지는 이마 (나는 사실이라고 생각) 도시 전설로 밝혀 "우라"라는 동생을 한 것으로 1891과 1895 사이에, 텍사스의 주지사 James ("Big Jim") Hogg했다.

+0

감사 캐리! 위의 귀하의 의견을 보았습니다. 죄송합니다! Stack Overflow 사용법 에티켓을 배우는 중. 그래서, 나는 일하는 첫 번째 대답 - 초보자의 실수에서 뛰어 올랐다. 귀하의 솔루션에 감사드립니다. 좋은 대안이고 일을 끝내게됩니다! – AliZ

관련 문제