我有两个数组:
members = ["Matt Anderson", "Justin Biltonen", "Jordan Luff", "Jeremy London"]
instruments = ["guitar, vocals", "guitar", "bass", "drums"]
我想做的是把这些合并起来,这样得到的数据结构就是一个哈希值,如下所示:
{"Matt Anderson"=>["guitar", "vocals"], "Justin Biltonen"=>"guitar", "Jordan Luff"=>"bass", "Jeremy London"=>"drums"}
注意“安德森”的值现在是一个数组而不是字符串,有Ruby向导愿意试试吗?
我知道Hash[*members.zip(instruments).flatten]
几乎以我想要的方式组合了它们,但是先把“吉他,人声”字符串变成一个数组怎么样?谢谢。
8条答案
按热度按时间kg7wmglp1#
正如雷夫凯特勒张贴,使用zip是要走的路。
8nuwlpux2#
使用
map
和split
将乐器字符串转换为数组:然后使用
Hash[]
和zip
将members
与instruments
组合:得到
如果你不关心单项列表是否也是数组,你可以使用这个简单的解决方案:
它会给你这个
hxzsmxv23#
示例01
示例02
mhd8tkvw4#
这是做你想做的事情的最好和最干净的方法。
好好享受吧!
bfnvny8b5#
nxowjjhe6#
如果不关心结果中的单元素数组,可以用途:
nfeuvbwi7#
omhiaaxx8#
当处理这样的编程任务时,从逐步数据转换的Angular 来考虑会有所帮助。
您有两个数组:乐队成员和他们演奏的乐器。但有时一个成员演奏不止一种乐器。这意味着有另一个实体在暗中潜伏。
这个实体可以通过引入一个逻辑条件来显式化:
根据这个条件转换了原始的
instruments
数组之后,就可以将其合并为一个成员为以下成员的哈希: