이것은 매우 간단 할 수 있지만 Ruby의 모든 배열 함수를 모른다. 나는 같은 지정된 배열이있는 경우2 차원 배열의 루비 배열, 검색/조회?
:
values = [["a", 1], ["b", 3], ["c", 7], ... etc ]
을 나는 두 가지 기능 싶습니다
- 함수 나 "B"를주고, 나에게 3
- 을 제공합니다 다른 방법은, 내가 3을 줄 때 "b"를주는 함수.
쉬운 방법이 있어야합니까?
이것은 매우 간단 할 수 있지만 Ruby의 모든 배열 함수를 모른다. 나는 같은 지정된 배열이있는 경우2 차원 배열의 루비 배열, 검색/조회?
:
values = [["a", 1], ["b", 3], ["c", 7], ... etc ]
을 나는 두 가지 기능 싶습니다
쉬운 방법이 있어야합니까?
hash = array.to_h => Converts your array to a hash
hash[key] = value => Get the value associated with the key
hash.invert[key] = value => This method inverts your hash and you can select values
고마워, options_for_select에 대한 것이었지만, 이제는 해시도 걸릴 수 있다는 것을 알았습니다. 이중 배열은 필요 없습니다. – bobomoreno
Hash[values]["b"] # => 3
Hash[values.map(&:reverse)][3] # => "b"
첫 번째로 해시에 배열을 변환하여, 달성하기 쉬운 :
value_hash = Hash[values]
와 함께이 액세스 : 다른 방법을
value_hash['b'] # => 3
주위에 내가 먼저 것 고유 한 요청인지 확실하게 알고 싶습니까? 그래서 'a', 'b', 'c', ... 그리고 1,3,7 ... 등이 독특합니까?
첫 번째 질문은 다음과 같습니다. 배열이어야합니까? Hash은이를 위해 설계되었으며 키/값 조회가 내장되어 있습니다.
당신은 수행하여 배열에서 해시를 만들 수 있습니다
이hash = Hash[values]
그리고 반대의 경우 hash["a"] # => 1
를 사용하십시오 hash.key(1) # => "a"
배열에 짝수 개의 요소가 포함되어있는 한 배열에서 해시를 만들 수 있습니다. 홀수 번호의 요소는 키로 취급되고 짝수 번호의 요소는 값으로 처리됩니다. –
@theTinMan 완전히 사실입니다. 이 가정은 OP의 예를 기반으로합니다. – CDub
글쎄, OP는 배열로부터 해시를 생성 할 수 있다는 것을 몰랐다. 따라서 배열이 짝수 개의 요소 여야한다는 규정도 알 수 없었다. –
그래 해시 대답은, 당신의 경우 돈 물론 중복 키가 없습니다.
ary = [["A", 1], ["B", 2], ["C", 3], ["D", 4], ["E", 5], ["F", 6], ["G", 6]]
ary.assoc('A') => ["A", 1]
ary.rassoc('3') => ["C", 3]
참고 : 그렇지 않으면 당신이 각각 첫 번째와 마지막 요소와 일치하는 배열의 배열을 검색 배열 #의 ASSOC 번호의 rassoc를 사용할 수있는이 방법은 그들 모두를 일치하는 첫 번째 배열을하지 반환합니다.
에서 나는 하나의 값을 찾을 수 해시를 만드는 어떤 점을 볼 참조하십시오. 단순하고 직접적인 접근 방식은 어떨까요?
values = [["a", 1], ["b", 3], ["c", 7]]
values.find { |l,n| l=='b' }.last #=> 3
values.find { |l,n| n==3 }.first #=> "b"
물론 여러 값을 다룰 수 없습니다.
코드를 요청할 때 시도한 것을 보여주고 왜 그것이 원하는대로하지 않는지 설명하는 것이 중요합니다. [ "주제"FAQ] (http://stackoverflow.com/help/on-topic)의 3 번을보십시오. 당신이 그렇게하지 않았기 때문에 귀하의 질문은 기술적으로 주제와 관련이 없으므로 바로 그 문제를 해결할 수 있습니다. –