编写一个接受任意大小的多维容器并将其转换为一维关联数组的函数,该数组的键是表示其值的路径的字符串原来的容器。任意大小的多维容器并将其转换为一维关联数组
所以{ 'one' => {'two' => 3, 'four' => [ 5,6,7]}, 'eight'=> {'nine'=> {'ten'=>11}}}
将成为 : "{'one/two' => 3,'one/four/0' => 5, 'one/four/1' => 6, 'one/four/2' => 7, 'eight/nine/ten' : 11}"
到目前为止,我已经得到了这个...但我有一个很大的问题。任何指向我忽略的东西的指针?
def oneDimHash(hash)
if hash.is_a?(Fixnum)
puts "AHHH"
else
hash.each_pair do |key,value|
if value.is_a?(Hash)
@temp_key << key << '/'
oneDimHash(value)
elsif value.is_a?(Array)
value.each_with_index do |val,index|
puts index
@temp_key << "#{index}"
oneDimHash(val)
end
else
@temp_key << key
@result["#{@temp_key}"] = "#{value}"
@temp_key = ''
end
end
end
end
小心描述一下你想克服的问题吗? – 2014-10-07 19:55:36