如何更改数组数组中元素的顺序?

Ily*_*rov 0 ruby arrays

我想转换数组

[[:name1, :value1], [:name2, :value2]]
Run Code Online (Sandbox Code Playgroud)

到数组

[[:value1, :name1], [:value2, :name2]]
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

Phr*_*ogz 5

各种选择(每个版本后跟短糖):

# Create a new array of swapped elements
my_array = my_array.map{ |a| a.reverse }
my_array = my_array.map(&:reverse)

# Mutate the existing array with swapped elements
my_array.map!{ |a| a.reverse }
my_array.map!(&:reverse)

# Mutate the elements in the existing array
my_array.each{ |a| a.reverse! }
my_array.each(&:reverse!)
Run Code Online (Sandbox Code Playgroud)

第一个选项是'最安全',只要没有修改现有数组(如果你有其它不应该更改的引用).

第二个选项与第一个选项大致相同,除非你有两个引用,my_array并希望其中一个没有被删除.

第三种选择是最"破坏性的"; 对成对元素的每个引用都将被更改.但是,它也是最节省内存的,因为没有创建新的数组.