2013-04-23 42 views
2

說我有一個元素...重新定位陣列

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

...我想移動「A」「B」和「C」之間。 我目前做

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

我可以做,在一個單一的操作?

感謝

+0

它必須在哪裏?爲什麼? – tokland 2013-04-23 12:55:39

回答

2

你並不需要重複"a"。把它們放在一個:

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

謝謝!這將完成這項工作。 – dublxdad 2013-04-23 14:27:11

2

如果要移動 「一」 之間 「B」 和 「C」,那麼你應該做的:

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

※使用.delete_at代替.delete因爲您的陣列中可能有多個'a'

-1

使用Array#shuffle!

arr = [ "a","b","c" ] 
arr.shuffle! until arr[1] == 'a' && arr[0]=='b' 
p arr #=> ["b", "a", "c"] 
0

插入B之後,不管他們是在陣列中,其中:

arr.insert(arr.index("b"), arr.delete_at(arr.index("a"))) 
=> ["b", "a", "c"] 

你也可以這樣做:

arr[arr.index("a")], arr[arr.index("b")] = "b","a" 
3

您可以使用並行作業:

arr[0], arr[1] = arr[1], arr[0] 
=> ["b", "a"] 
arr 
=> ["b", "a", "c"]