我有一个数组,想在所有元素之间插入一个新元素,就像join
方法。例如,我有
[1, [], "333"]
我需要的是
[1, {}, [], {}, "333"]
请注意,在所有元素之间插入了一个新的空哈希。
编辑:
目前我所拥有的是:
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>
我想知道最好的方法。
[1, 2, 3].flat_map { |x| [x, :a] }[0...-1]
#=> [1, :a, 2, :a, 3]
仅供参考,该函数称为散布 http://zvon.org/other/haskell/Outputlist/intersperse_f.html(至少在哈斯克尔)。
[更新] 如果你想避免切片(创建数组的副本):
[1, 2, 3].flat_map { |x| [x, :a] }.tap(&:pop)
#=> [1, :a, 2, :a, 3]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)