0

Ruby を使用して Google Sketchup でプラグインをコーディングしていますが、ユーザーの組み合わせに応じて、配列に存在する 2 つの配列を並べ替えようとしているときに、実際の問題に直面しました。

私は次のような配列の配列を持っています[["1"],["lol"], ["so"]]

このような組み合わせがある場合 <[1, 2, 3]問題ありません。同じままである必要があります。[["1"],["lol"], ["so"]]

しかし、このような組み合わせがある場合[2, 3, 1]、出力は次のようになります。[["lol"], ["so"], ["1"]]

[3,1,2]=>の場合[["so"], ["1"], ["lol"]]

...等

編集
申し訳ありませんが、私は少し似ている配列を忘れていました:[["1, 2, 3"], ["lol1, lol2, lol3"], ["so1, so2, so3"]]したがって、組み合わせ[2, 3, 1]の場合、出力は次のようになります:[["2, 3, 1"], ["lol2, lol3, lol1"], ["so2, so3, so1"]]

助けてくれてありがとう。

4

4 に答える 4

4

収集を使用できます:

array   = [["1"],["lol"], ["so"]]
indexes = [2, 1, 3]
indexes.collect {|i| array[i-1]} #=> [["lol"], ["1"], ["so"]]

インデックスを 0 ベースに設定すると、-1 を削除できます

split と map を使用して、文字列を値に変換できます。

"1, 2, 3".split(",").map { |i| i.to_i} # [1, 2, 3]

その後、文字列を分割することもできます

"lol2, lol3, lol1".split(/, /) #=> ["lol2", "lol3", "lol1"]

上記と組み合わせて、必要なものを取得できるはずです。

于 2013-02-05T21:30:40.093 に答える
1
indexes = [2, 1, 3]
array   = [["1"],["lol"], ["so"]]
result  = indexes.map{|index| array[index-1] }
于 2013-02-05T21:13:09.790 に答える
0

また、active_enum も見てください。

https://github.com/adzap/active_enum

次のようなことができます。

class YourClassName < ActiveEnum::Base
  value [1] => ['1']
  value [2] => ['lol'] 
  value [3] => ['so']
end
于 2013-02-05T21:29:02.380 に答える
0
a = [["1"], ["lol"], ["so"]]
index = [2, 1, 3]

index.collect {|i| a[i - 1]}

これは出力します

[["lol"], ["1"], ["so"]]
于 2013-02-05T21:38:53.827 に答える