【发布时间】:2013-04-23 12:39:09
【问题描述】:
说我有...
arr = ["a", "b", "c"]
...我想在“b”和“c”之间移动“a”。 我目前有
arr.delete("a")
arr.insert(2, "a")
我可以一次操作吗?
谢谢
【问题讨论】:
-
它必须就位吗?为什么?
标签: ruby arrays ruby-1.8.7
说我有...
arr = ["a", "b", "c"]
...我想在“b”和“c”之间移动“a”。 我目前有
arr.delete("a")
arr.insert(2, "a")
我可以一次操作吗?
谢谢
【问题讨论】:
标签: ruby arrays ruby-1.8.7
你可以使用并行赋值:
arr[0], arr[1] = arr[1], arr[0]
=> ["b", "a"]
arr
=> ["b", "a", "c"]
【讨论】:
您无需重复"a"。将它们合二为一:
arr.insert(2, arr.delete("a"))
【讨论】:
如果你想在“b”和“c”之间移动“a”,那么你应该这样做:
arr.insert(1, arr.delete_at(0))
※使用.delete_at 而不是.delete,因为您的数组中可能有多个'a'。
【讨论】:
在 b 之后插入 a,无论它们在数组中的什么位置:
arr.insert(arr.index("b"), arr.delete_at(arr.index("a")))
=> ["b", "a", "c"]
你也可以这样做:
arr[arr.index("a")], arr[arr.index("b")] = "b","a"
【讨论】:
arr = [ "a","b","c" ]
arr.shuffle! until arr[1] == 'a' && arr[0]=='b'
p arr #=> ["b", "a", "c"]
【讨论】: