我有一个从数据库返回的数组,我想确保它们总是相同的长度。当它们不是的时候,我想把零推到合适的长度,但也要保持索引的完整性。
大多数时候,它看起来像
array = [["apple", "blueberries", "banana", "kiwi"], ["20.15", "13.50", "22.10", "10.50"], ["10", "12", "26", "34"]]
字符串
我最终会调用each_with_index
,并需要它们在一个表中匹配ie.apple,20.15,10。
有时,数组中可能会缺少一两个元素,我想把零放在它们的位置上。
array2 = [["apple", "blueberries", "banana", "kiwi"], ["20.15", "22.10"], ["10", "12", "26", "34"]]
型
我试过类似的方法
array2.each {|f| f.push(0) until f.length === 4}
=>[["apple", "blueberries", "banana", "kiwi"], ["20.15", "13.50", 0, 0], ["10", "12", "26", "34"]]
型
但是零将被推到数组的末尾-理想情况下,输出将是
=>[["apple", "blueberries", "banana", "kiwi"], ["20.15", 0, "13.50", 0], ["10", "12", "26", "34"]]
型
3条答案
按热度按时间vsaztqbk1#
我不想打断你,但编程对孩子来说并不是一件容易的事情,就像非程序员的成年人有时想象的那样。你的情况需要创建一个单独的类,也许是Array的子类。像这样:
字符串
现在,我们可以想象重新定义
GreenGrocer.new
公共类方法,以确保每个GreenGrocer
示例都有缺失的元素,并使用零修补,如下所示:型
但何必呢?这足以使一个
#to_table
方法将您不完整的数据结构转换为您需要的表,在此过程中将缺失的数据点填充为零。因此,我们定义:型
这就是我的方法,因为我不知道你想输出什么样的表,你可能需要相应地修改我的
#to_table
方法。3zwtqj6y2#
在这里做一些假设:
1.你不在乎它们是否匹配(根据你的示例输出)。
array2
的大小始终为4。array2
只会丢失1个或2个元素。字符串
6ie5vjzr3#
您要使用
Array#insert
字符串