ruby 将元素推到数组开头的最简单方法是什么?

huus2vyu  于 2023-03-08  发布在  Ruby
关注(0)|答案(7)|浏览(150)

我想不出一个简单的方法。有办法吗?

kkih6yb8

kkih6yb81#

使用unshift方法怎么样?
ary.unshift(obj, ...) → ary
将对象前置到自身的前面,将其他元素向上移动。
在使用中:

a = [ 0, 1, 2]
a.unshift('x')
# => ["x", 0, 1, 2]
a.inspect
# => "["x", 0, 1, 2]"
r6vfmomb

r6vfmomb2#

您可以使用insert

a = [1,2,3]
a.insert(0,'x')
=> ['x',1,2,3]

其中,第一个参数是要插入的索引,第二个参数是值。

r1zk6ea1

r1zk6ea13#

array = ["foo"]
array.unshift "bar"
array
=> ["bar", "foo"]

注意,这是毁灭性的!

ctrmrzij

ctrmrzij4#

从Ruby 2.5.0开始,Array就附带了prepend方法(它只是unshift方法的别名)。

sxpgvts3

sxpgvts35#

也可以使用数组串联:

a = [2, 3]
[1] + a
=> [1, 2, 3]

这将创建一个新数组,而不会修改原始数组。

frebpwbc

frebpwbc6#

可以使用methodsolver查找Ruby函数。
这是一个小脚本,

require 'methodsolver'

solve { a = [1,2,3]; a.____(0) == [0,1,2,3] }

查一下指纹

Found 1 methods
- Array#unshift

您可以使用安装methodsolver

gem install methodsolver
mi7gmzs6

mi7gmzs67#

您可以使用prependdelete的组合,它们既符合习惯用法,又能揭示意图:

array.delete(value)  # Remove the value from the array  
array.prepend(value) # Add the value to the beginning of the array

或者在一行中:

array.prepend(array.delete(value))

相关问题