如何在map方法内两次返回行

问题描述 投票:0回答:1

仅在(例如)key == :b的情况下,我想在map方法内两次返回一个值)>

我有这样的东西:

{a: 1, b: 2, c: 3}.map{ |x| x }
# => [[:a, 1], [:b, 2], [:c, 3]]

我想创建这个:

# => [[:a, 1], [:b, 2], [:b, 2], [:c, 3]]

我尝试过:

output = {a: 1, b: 2, c: 3}.map{ |x| x.first == :b ? [x,x] : x }
# => [[:a, 1], [[:b, 2], [:b, 2]], [:c, 3]]

output.flatten
# => [:a, 1, :b, 2, :b, 2, :c, 3]
output.flatten(1)
# => [:a, 1, [:b, 2], [:b, 2], :c, 3]

有什么想法吗?

我想在map方法内两次返回一个值,只有在键==:b的情况下,我才是这样的:{a:1,b:2,c:3} .map {| x | x}#=> [[:: a,1],[:b,2],[:c,3]] I ...

ruby-on-rails flatten
1个回答
0
投票

您可以将其写成一行{a: 1, b: 2, c: 3}.map{ |x| x.first == :b ? [x,x] : [x] }.flatten(1)


0
投票
{a: 1, b: 2, c: 3}.map{ |x| x.first == :b ? [x,x] : [x] }.flatten(1)
© www.soinside.com 2019 - 2024. All rights reserved.