Tag: flatten

如何压缩哈希,使每个键成为唯一值?

我想采用嵌套哈希和数组的哈希,并将其展平为具有唯一值的单个哈希。 我一直试图从不同的角度来解决这个问题,但随后我会让它变得比它需要的更复杂,让自己迷失在正在发生的事情中。 示例源哈希: { “Name” => “Kim Kones”, “License Number” => “54321”, “Details” => { “Name” => “Kones, Kim”, “Licenses” => [ { “License Type” => “PT”, “License Number” => “54321” }, { “License Type” => “Temp”, “License Number” => “T123” }, { “License Type” => “AP”, “License Number” => “A666”, “Expiration Date” => “12/31/2020” […]

Ruby内部展平(数组数组)

我有一个像下面这样的数组 [ [[0, :a], [2, :b]], [3, :c], [4, :d], [[5, :e], [6, :f], [7, :g]] ] 也就是说,元素数组是(1)2元素数组,或(2)2元素数组数组。 我试图找到一种优雅的方法来“扁平化”这个数组,使得(2)的元素扩展到根级元素。 在这个例子中: [[0, :a], [2, :b], [3, :c], [4, :d], [5, :e], [6, :f], [7, :g]] 这几乎就像使用Array#flatten(depth) ,除了depth需要从内到外工作,而不是外部工作。 实际的数组可能变得非常大,因此出于性能原因,我不希望将( << )元素推送到循环中的新数组中。 出于某种原因,我无法想到如何使用map , flatten , flat_map或其他更有效的Enumerable方法的任意组合来实现这一点,而无需编写C ++样式的preallocate-and-populate循环。 任何人都可以想到更多Rubyist方式来做到这一点吗?