加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Ruby数组的所有元素之间插入一个新元素?

发布时间:2020-12-16 21:13:47 所属栏目:百科 来源:网络整理
导读:我有一个数组,想在所有元素之间插入一个新元素,就像join方法一样.例如,我有 [1,[],"333"] 而我需要的是 [1,{},"333"] 请注意,在所有元素之间插入了一个新的空哈希. 编辑: 目前我所拥有的是: irb(main):028:0 a = [1,"333"]= [1,"333"]irb(main):029:0 a =
我有一个数组,想在所有元素之间插入一个新元素,就像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,3]

仅供参考,该功能称为intersperse(至少在Haskell中).

[更新]如果要避免切片(创建数组的副本):

[1,:a] }.tap(&:pop)
#=> [1,3]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读