-1

私は次のような配列を持っています:
input2 = ["Other", "Y", "X", "Z", "Description"]

を取り出し"Y", "X", "Z", "Description"て変数に格納したいのですが、それらをその順序で保持します。
例 :
input2 = ["Z", "X", "Y", "Other", "Description"]次のものが必要です。

input3 = ["Other"]
some_variable = ["Z", "X", "Y", "Description"]

手伝ってくれてありがとう。

4

4 に答える 4

1

何かのようなもの?

def get_stuff(arr, *eles) # or change eles from splat to single and pass an array
  eles.map { |e| e if arr.include?(e) }
end

input2 = ["Other", "Y", "X", "Z", "Description"] 

x = get_stuff(input2, 'Y', 'X', 'Z', 'Description')
y = get_stuff(input2, 'Other')
p x
#=> ["Y", "X", "Z", "Description"]
p y
#=> ["Other"]

エレガントではありませんが、機能します。

于 2013-02-06T23:28:25.313 に答える
0

これは、実際にはRubyの削除メソッドとマップを使用して実行できます。おそらくさらに単純化することができます。

def get_stuff(arr=[], eles=[])
  eles.map { |e| arr.delete(e) }
end

a = %w(Other Y X Z Description)
v = %w(Y X Z Description)
r = get_stuff(a, v)

# a is modified to ["Other"]
# r returns ["Y", "X", "Z", "Description"]
于 2013-02-07T01:27:05.407 に答える
0
def take_it_off(arr, values)
  without = []
  ordered_values = []
  arr.each do |val|
    if values.include? val
      ordered_values << val
    else
      without << val
    end
  end

  return without, ordered_values
end

だからあなたはすることができます

irb> values = "Y", "X", "Z", "Description"
=> ["Y", "X", "Z", "Description"]

irb> arr = ["Z", "X", "Y", "Other", "Description"]
=> ["Z", "X", "Y", "Other", "Description"]

irb> take_it_off(arr, values)
=> [["Other"], ["Z", "X", "Y", "Description"]]
于 2013-02-06T23:44:27.550 に答える
0
input2 = [:a,:b,:c,:d,:e]
input3 = input2.slice!(-4..-1) # ! indicates destructive operator
#Or just as well: input3 = input2.slice!(0..4)
input2.inspect
#[:a]
input3.inspect
#[:b,:c,:d,:e]
于 2013-02-06T23:23:21.067 に答える