如何在Ruby阵列中的所有元素之间插入一个新元素? [英] How to insert a new element in between all elements of a Ruby array?

查看:89
本文介绍了如何在Ruby阵列中的所有元素之间插入一个新元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数组,并希望中的所有元素之间插入一个新的元素,好歹像加入方法。例如,我有

  [1,[],333]

和我需要的是

  [1 {} [] {},333]

请注意一个新的空哈希插入中的所有元素之间。

编辑:
目前,我所拥有的是:

  IRB(主):028:0>一个= [1,[],333]
= GT; [1,[],333]
IRB(主):029:0>一个= a.inject([]){|的x,y |点¯x所述&;&下; ÿ;点¯x所述&;&下; {}; X}
= GT; [1 {} [],{},333,{}]
IRB(主):030:0> a.pop
= GT; {}
IRB(主):031:0>一个
= GT; [1 {} [] {},333]
IRB(主):032:0>

我想知道的最佳方式。


解决方案

  [1,2,3] .flat_map {| X | [X,:一]} [0 ...- 1]
#=> [1,:一个,2,:一,3]

仅供参考,该功能被称为穿插(至少在Haskell)。

I have an Array and want to insert a new element in between all elements, someway like the join method. For example, I have

[1, [], "333"]

and what I need is

[1, {}, [], {}, "333"]

Note a new empty hash was inserted in between all elements.

Edit: Currently what I have is:

irb(main):028:0> a = [1, [], "333"]
=> [1, [], "333"]
irb(main):029:0> a = a.inject([]){|x, y| x << y; x << {}; x}
=> [1, {}, [], {}, "333", {}]
irb(main):030:0> a.pop
=> {}
irb(main):031:0> a
=> [1, {}, [], {}, "333"]
irb(main):032:0>

I want to know the best way.

解决方案

[1, 2, 3].flat_map { |x| [x, :a] }[0...-1]
#=> [1, :a, 2, :a, 3]

FYI, that function is called intersperse (at least in Haskell).

这篇关于如何在Ruby阵列中的所有元素之间插入一个新元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆