2

说我有...

arr = ["a", "b", "c"]

...我想在“b”和“c”之间移动“a”。我目前做

arr.delete("a")
arr.insert(2, "a")

我可以在一次操作中做到这一点吗?

谢谢

4

5 回答 5

3

您可以使用并行分配:

arr[0], arr[1] = arr[1], arr[0]
=> ["b", "a"]
arr
=> ["b", "a", "c"]
于 2013-04-23T14:20:46.090 回答
2

你不需要重复"a"。将它们合二为一:

arr.insert(2, arr.delete("a"))
于 2013-04-23T12:46:46.460 回答
2

如果你想在“b”和“c”之间移动“a”,那么你应该这样做:

arr.insert(1, arr.delete_at(0))

※使用.delete_at代替,.delete因为您'a'的阵列中可能有多个。

于 2013-04-23T12:55:05.693 回答
0

采用Array#shuffle!

arr = [ "a","b","c" ] 
arr.shuffle! until arr[1] == 'a' && arr[0]=='b'
p arr #=> ["b", "a", "c"]
于 2013-04-23T13:04:53.613 回答
0

在 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"
于 2013-04-23T13:18:05.840 回答