如何将数组元素扩展为子数组?

时间:2015-12-07 15:37:49

标签: ruby-on-rails ruby

我有一个巨大的阵列

huge = 1000
huge_array = (1..huge).to_a

如何最好地“扩展”这个数组,使每个元素成为格式[original_element,“默认值”]的子数组,最好是以内存友好的方式(没有明确的#map循环?)

expanded_huge_array = huge_array.some_magic
#=> [[1, "default value"],[2, "default value"], ... [1000, "default value"]]

2 个答案:

答案 0 :(得分:2)

huge_array.zip(['default value'] * huge_array.size)

顺便说一下,您可以使用Hash with default 模拟此行为:

arr = Hash.new { |h, key| huge_array.include?(key) ? [key, 'default value'] : nil }
arr[1]
#⇒ [1, 'default value']
arr[10000]
#⇒ nil

答案 1 :(得分:1)

尝试Array#product

  

返回所有数组中所有元素组合的数组。

>> [1,2,3].product(["a"])
=> [[1, "a"], [2, "a"], [3, "a"]]