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


Answers:


387

使用该unshift方法呢?

ary.unshift(obj, ...) → ary
将对象放置在自身的前面,将其他元素向上移动。

并在使用中:

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

那就是我要找的那个,忘记了名字。
Ed S.

1
我看了一下,只是没有快速浏览而已。
Ed S.

1
@Ed:页面顶部的方法列表可能具有更好的格式,因此很难直观地进行扫描。我找到它是因为我知道我要寻找的方法名称:)
mu太短了,

118
如果您在记住数组之间的添加关系shift以及unshift从数组中删除的困难时,请在脑海中从名称中删除一个“ f”,您会清楚地看到方向。(然后,您必须记住,这些方法不适用于数组的“末端”。;)
Phrogz,2011年

3
@Phrogz我多年来听到的最好的记忆技术!:-)
konung

47

您可以使用insert

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

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


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

警告,这是破坏性的!


11

您还可以使用数组串联

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

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


11

从Ruby 2.5.0开始,Array随该prepend 方法一起提供(这只是该unshift方法的别名)。


1
这也适用于ruby 2.4.4p296,所以也许仅适用于ruby 2.4?
Obromios

9

您可以methodsolver用来查找Ruby函数。

这是一个小脚本,

require 'methodsolver'

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

运行此打印

Found 1 methods
- Array#unshift

您可以使用以下方法安装methodsolver

gem install methodsolver


irb> require 'methodsolver'LoadError: cannot load such file -- method_source从... 起因/var/lib/gems/1.9.1/gems/methodsolver-0.0.4/lib/methodsolver.rb:2。红宝石1.9.3p484,IRB 0.9.6,Ubuntu的14
卡米尔Goudeseune

1
尝试使用pry替代irb
akuhn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.