2013-07-20 2 views
2

내가 한 두 배열 :다른 인덱스 배열로 배열의 요소를 찾으려면 어떻게해야합니까?

["mo", "tu", "we", "th", "fr", "sa", "su"][1, 5]

두 번째 배열의 인덱스에 따라 첫 번째 배열에서 새 배열을 만들 수있는 가장 짧은, 가장 깨끗한 방법은 무엇입니까? 나는 같은 것을 할 싶습니다 :

["mo", "tu", "we", "th", "fr", "sa", "su"][[1, 5]] (수 없다 이런 식으로)

["tu", "sa"]를 얻을 것입니다.

어떻게이 작업을 수행 할 수 있습니까? 미리 감사드립니다! 여기

["mo", "tu", "we", "th", "fr", "sa", "su"].select.with_index {|_, index| [1, 5].include?(index)} 
# => ["tu", "sa"] 

루비 초보자를위한이 답변에 대한 참고 사항 몇 가지입니다 :

답변

5

Array#values_at

a = ["mo", "tu", "we", "th", "fr", "sa", "su"] 
b= [1, 5] 
c = a.values_at(*b) 
# => ["tu", "sa"] 
+2

'values_at'에 +1. –

2

selectwith_index를 사용하여 다음과 같이이 시도는 배열에서 특정 요소를 뽑아 체인 될 수있다 :

  1. 첫 번째 블록 변수는 일 o ("mo", "tu"등) 일주일 동안 ("mo", "tu"등) 사용할 수는 없지만 "_"변수의 이름을 지정하는 것이 관습입니다.
  2. with_index 메서드는 Ruby 반복기를 사용하여 액세스 할 수 있습니다 (each_with_index과 유사 함). 이 경우 select_with_index이 없으므로 select.with_index을 사용합니다.
관련 문제