向数组追加n个元素

4

我有一个数组和一个哈希表

L = []
H = {3 => "a", 2 => "b", 1 => "c"}

我想迭代哈希表的键,以获取元素出现次数n,并将该元素n次附加到数组中

结果

L = ['a', 'a', 'a', 'b', 'b', 'c']

使用inject(或其他在Ruby代码中经常看到的方法)如何更好地编写此代码?


只是一点小提示:在 Ruby 1.9 之前哈希表不保留插入顺序(通常情况下,哈希表是一种无序数据结构),所以也许这并不是你的首选数据结构 :) - Niklas B.
2
这些元素是可排序的对象,因此我认为如果需要顺序,只需在之后进行排序调用即可。 - MxLDevs
好的,我只是想指出来 :) - Niklas B.
2个回答

17
array = hash.flat_map { |k,v| [v]*k }

啊,flat_map,有什么事情是你做不到的吗? - Jörg W Mittag
1
不错,我以前从没见过 flat_map - Andrew Marshall
@JörgWMittag:它还不能为您制作Pina Colada。我认为Matz正在努力解决这个问题。 - Niklas B.

2

@David的回答完全符合你的需求。然而,一般来说,您可以通过以下其中一种方式将对象o添加到现有数组n中:

# Modify the array in-place, or…
my_array.concat( [o]*n )

# …alternatively create a new modified array
new_array = my_array + [o]*n

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接