我想转换数组
[[:name1, :value1], [:name2, :value2]]
Run Code Online (Sandbox Code Playgroud)
到数组
[[:value1, :name1], [:value2, :name2]]
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?
各种选择(每个版本后跟短糖):
# 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并希望其中一个没有被删除.
第三种选择是最"破坏性的"; 对成对元素的每个引用都将被更改.但是,它也是最节省内存的,因为没有创建新的数组.