0

我正在用 ruby​​ 在 Google Sketchup 中编写一个插件,在尝试根据用户组合排列数组中存在的两个数组时遇到了一个真正的问题。

我有一个数组数组,比如[["1"],["lol"], ["so"]]

当我们有这样的组合时 <[1, 2, 3]没关系,它应该保持不变:[["1"],["lol"], ["so"]]

但是当我们有这样的组合时[2, 3, 1],输出应该是:[["lol"], ["so"], ["1"]]

对于[3,1,2]=>[["so"], ["1"], ["lol"]]

...ETC

编辑
对不起,伙计们,我忘记了我有点像的数组:[["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
a = [["1"], ["lol"], ["so"]]
index = [2, 1, 3]

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

这输出

[["lol"], ["1"], ["so"]]
于 2013-02-05T21:38:53.827 回答
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 回答