2011-08-23 7 views
5

이것은 실제로 길다. 그러나 존재한다면 평생을 좀더 편하게 해줄 것이다.활성 레코드와 동등한 루비 배열. (기준)

모든 경우에 해당하는 시나리오가 있습니다. 나는 하나의 키로 해쉬 배열을 가지고 있는데, 다른 해시 값은 ........ 네, 알고 있습니다.

Heres는 더 나은 설명 :

@myArrayOfStuff[0] 
@myArrayOfStuff[0]["single-key"] 
@myArrayOfStuff[0]["single-key"]["object-identifier"] 

첫 번째는 해시를 반환합니다. 두 번째는 객체를 반환합니다 (내 경우 페이지라고 함). 세 번째는 참조를 객체 식별자로 갖는 모든 변수를 반환합니다.

충분히 간단합니다.

개체 식별자 값이 0이 아니거나 x보다 큰 다른 배열을 선택하고 싶습니다. 뭔가를 activerecord.where 메서드와 비슷합니다.

@x = @myArrayOfStuff.where(["single-key"]["object-identifier"]) > 3orwhatever 

분명히 신중한 구문이므로이 기능이 작동하지 않습니다. 그러나 그것에 대해 갈 다른 방법이 있습니까? 시도 할 또 다른 경로는이 변수로 배열을 정렬하는 것일 수 있습니다. 뭔가 같은 것

@x = @myArrayOfStuff.sort {|x,y| y <=> x } 

그러나 나는 정말로 루비의 정렬 방법이 어떻게되는지 알지 못한다. 아무도 도와 줄 수 있습니까?

+0

http://stackoverflow.com/questions/2637419/understanding-ruby-array-sort 그것이 내가 – overtone

답변

13

select 메서드를 사용할 수 있습니다.

@x = @my_array_of_stuff.select {|v| v["single-key"]["object-identifier"] > 3} 
+0

이 우수 할 노력하고있어 적용 있는지 확실하지 않습니다 지금은 여전히이 글을 읽고! 나는 모든 것을 이해한다. – overtone

0
collection = [ 
    {a:1, b:2, c:3}, 
    {a:2, b:3, c:4} 
] 
where = {a:1} 
collection.select{|item| 
    where.map{|k,v| 
    item[k] == v ? true : nil 
    }.compact.length == where.length 
} 
+1

코드 전용 답변은 금지되어 있지 않지만, 이것이 군중을 소싱하는 것이 아니라 Q & A 커뮤니티라는 것을 이해해야한다. 그리고 일반적으로 OP가 코드를 대답으로 게시했다는 것을 이해하면, 그녀는 그/그녀 자신에 유사한 해결책을 생각해 낼 것이고, 첫번째 장소에 질문을 배치하지 않을 것입니다. 동일한 원칙은 앞으로 제시 될 코드에 익숙하지 않은 향후 독자에게도 적용됩니다. 따라서 * how * 및/또는 * why * 작동 원리를 설명하여 응답 및/또는 코드에 대한 컨텍스트를 제공하십시오. – XenoRo

관련 문제