如何在Ruby阵列中的所有元素之间插入一个新元素? [英] How to insert a new element in between all elements of a Ruby array?
本文介绍了如何在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屋!
查看全文