Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中将嵌套数组转换为嵌套哈希_Ruby_Arrays - Fatal编程技术网

在Ruby中将嵌套数组转换为嵌套哈希

在Ruby中将嵌套数组转换为嵌套哈希,ruby,arrays,Ruby,Arrays,在不知道数组的维数的情况下,如何将数组转换为嵌套哈希 例如: [["Message", "hello"]] 致: 或: 致: 或: 致: 因此: 考虑到成对嵌套数组的格式,下面的函数将其转换为所需的哈希 def嵌套的\u数组\u对\u散列(数组) 结果={} array.each do | elem| second=如果元素last.是_?(数组) 嵌套数组到散列(元素最后一个) 其他的 最后要素 结束 结果,合并!({elem.first.to_sym=>second}) 结束 结果 结束

在不知道数组的维数的情况下,如何将数组转换为嵌套哈希

例如:

[["Message", "hello"]]
致:

或:

致:

或:

致:

因此:


考虑到成对嵌套数组的格式,下面的函数将其转换为所需的哈希

def嵌套的\u数组\u对\u散列(数组)
结果={}
array.each do | elem|
second=如果元素last.是_?(数组)
嵌套数组到散列(元素最后一个)
其他的
最后要素
结束
结果,合并!({elem.first.to_sym=>second})
结束
结果
结束
较短的版本

def嵌套数组到散列(数组)
返回数组,除非array.is_a?排列
array.inject({})do| result,(键,值)|
结果,合并!(key.to_sym=>嵌套的_数组\u to_散列(值))
结束
结束

您的第一个示例不是嵌套数组,而是数组中的哈希。更详细地说,[[“内存”、[[“内存”、“32 GB”]、[“卡类型”、“MicroSD”]]]为什么具有数组的外部级别?从技术上讲,这可以解释为一个键(即下一层嵌套的整个数组就是键),但最外层散列中没有值-您可能需要提供更多示例或解释数组的构造方式,以便所有案例都可以被理解covered@Mischa很抱歉对于输入错误…抱歉,刚才注意到您对原始代码进行了响应,然后对原始代码进行了修改。
{{:message => "Hello"}}
[["Memory", [["Internal Memory", "32 GB"], ["Card Type", "MicroSD"]]]]
{{:memory => {:internal_memroy => "32 GB", :card_type => "MicroSD"}}}
[["Memory", [["Internal Memory", "32 GB"], ["Card Type", "MicroSD"]]], ["Size", [["Width", "12cm"], ["height", "20cm"]]]]
{ {:memory => {:internal_memroy => "32 GB", :card_type => "MicroSD"}, {:size => {:width => "12cm", :height => "20cm" } } }
> [:Message => "hello"]
=> [{:Message=>"hello"}]
> [:Message => "hello"][0]
=> {:Message=>"hello"}