首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >数组到哈希Ruby

数组到哈希Ruby
EN

Stack Overflow用户
提问于 2010-10-27 05:51:01
回答 9查看 204.1K关注 0票数 209

转换此数组:

代码语言:javascript
复制
a = ["item 1", "item 2", "item 3", "item 4"] 

...to a Hash:

代码语言:javascript
复制
{ "item 1" => "item 2", "item 3" => "item 4" }

也就是说,偶数索引处的元素是键,奇数索引处的元素是值。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-10-27 05:55:40

代码语言:javascript
复制
a = ["item 1", "item 2", "item 3", "item 4"]
h = Hash[*a] # => { "item 1" => "item 2", "item 3" => "item 4" }

就这样。*被称为splat运算符。

每个@Mike Lewis (在评论中)有一个警告:“要非常小心。Ruby在堆栈上扩展了splats。如果你是在一个大型数据集上这样做,那么你的堆栈可能会被打爆。”

因此,对于大多数通用用例,这种方法是很好的,但如果您想对大量数据进行转换,请使用不同的方法。例如,@Łukasz Niemier (也在评论中)为大型数据集提供了这种方法:

代码语言:javascript
复制
h = Hash[a.each_slice(2).to_a]
票数 370
EN

Stack Overflow用户

发布于 2014-01-14 05:40:07

Ruby2.1.0在数组上引入了一个to_h方法,如果原始数组由键-值对组成的数组组成,该方法就会执行所需的操作:http://www.ruby-doc.org/core-2.1.0/Array.html#method-i-to_h

代码语言:javascript
复制
[[:foo, :bar], [1, 2]].to_h
# => {:foo => :bar, 1 => 2}
票数 128
EN

Stack Overflow用户

发布于 2010-10-27 05:56:33

只需对数组中的值使用Hash.[]即可。例如:

代码语言:javascript
复制
arr = [1,2,3,4]
Hash[*arr] #=> gives {1 => 2, 3 => 4}
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4028329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档