2012-01-19 16 views
1

私は配列a = [1,2,3,4,5,6,7,8,9,10]を持っていて、この配列のサブセット、つまり1番目、5番目、7番目の要素が必要です。この配列から簡単な方法でこれらを抽出することは可能ですか?私は何かのように考えていた:配列から特定の要素を抽出するにはどうすればよいですか?

a[0,4,6] = [1,5,7] 

しかし、それは動作しません。

指定されたインデックス以外のすべてのインデックスを返す方法はありますか?例えば、

a[-0,-4,-6] = [2,3,4,6,8,9,10] 

答えて

10

のようなものは、ここに1つの方法です:

[0,4,6].map{|i| a[i]} 
20

あなたは簡単に行うことができます:Rubyで

[1] pry(main)> [1,2,3,4,5,6,7,8,9,10].values_at(0, 4, 6) 
=> [1, 5, 7] 
+0

+1を使用するための+1 – horseyguy

1

を、Arrayオブジェクトは、あなたがすることができます方法/オペレータ[]を持っています特定のインデックスでオブジェクトを取得/参照するか、範囲で指定されたオブジェクトの連続したサブセットを取得します。

ary[index] → obj or nil 
ary[start, length] → new_ary or nil 
ary[range] → new_ary or nil 

私はあなたの構文が気に入っています。これは便利ですが、標準のArrayオブジェクトからは提供されません。 Rubyがあなたの構文を採用するまで、他の人が示唆しているように、あなたが必要とするものを正確に行う方法はvalues_atです。

values_at(selector,...) → new_ary 

次いで、a = [1,2,3,4,5,6,7,8,9,10]場合:

a.values_at(0, 4, 6) 
=> [1, 5, 7] 
3
a = [1,2,3,4,5,6,7,8,9,10] 
[0,4,6] = [1,5,7-]について

:について

a.values_at(0, 4, 6) 
=> [1, 5, 7] 

[ -0、-4、-6] = [2,3,4,6,8,9,10]:

a - a.values_at(0, 4, 6) 
=> [2, 3, 4, 6, 8, 9, 10] 
関連する問題