我有一个数组和散列追加n元素添加到数组
L = [] H = {3=>"a", 2=>"b", 1=>"c"}
因此,我将遍历键得到的次数n的元件发生且该元素附加到阵列的n倍
结果
L = ['a', 'a', 'a', 'b', 'b', 'c']
什么是用注射(或其他方法,我常常在Ruby代码见)写的好办法?
我有一个数组和散列追加n元素添加到数组
L = [] H = {3=>"a", 2=>"b", 1=>"c"}
因此,我将遍历键得到的次数n的元件发生且该元素附加到阵列的n倍
结果
L = ['a', 'a', 'a', 'b', 'b', 'c']
什么是用注射(或其他方法,我常常在Ruby代码见)写的好办法?
array = hash.flat_map { |k,v| [v]*k }
啊,'flat_map',有什么你不能*做的? –
不错,以前从未见过'flat_map'。 –
@JörgWMittag:它还不能让你成为Pina Colada。我认为马茨正在努力。 –
@David的答案是适合您的需求。
# Modify the array in-place, or…
my_array.concat([o]*n)
# …alternatively create a new modified array
new_array = my_array + [o]*n
只是一个侧面说明:在一般情况下,但是,您可以Ø通过的一个添加对象到现有阵列ň次散列不保留之前的Ruby 1.9的插入顺序(在一般来说,哈希表是一个无序的数据结构),所以也许这不是你的目的首先正确的数据结构:) –
元素是可排序的对象,所以我想我可以做一个排序然后如果我需要订单。 – MxyL
够公平的,我只想指出:) –