2013-07-20 101 views
2

我有兩個數組:如何找到另一個索引數組中的元素?

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

什麼是最短的,最乾淨的方法,使從第一數組的新陣列,基於第二陣列的指標? 我願做這樣的事情:

["mo", "tu", "we", "th", "fr", "sa", "su"][[1, 5]](不可能這樣)

這將產生["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可以鏈接到採摘,從一個數組的某些元素:

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

這裏有一對夫婦對這個答案的Ruby新手注意事項:

  1. 第一個塊變量代表天o (「mo」,「tu」等)並且未被使用,但是慣例是命名變量「_」
  2. with_index方法可以與任何真棒Ruby迭代器鏈接以獲得訪問到索引(類似於each_with_index)。在這種情況下,沒有select_with_index,所以我們使用select.with_index
相關問題