字符串中的数组条目不会映射到散列

时间:2012-05-17 12:23:58

标签: ruby arrays hash

我是Ruby的新手,也是一般的编程。首先,我有以下代码:

hashy = {"a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 6, "f" => 6}
array = ["a", "b", "c"]
string = "df"
array.push (string.split(//))
puts array
test = array.map {|a| hashy.select {|k,v| a == k}}

puts test

此代码成功地将'a','b'和'c'映射到散列,并使用散列中的键和值填充测试。

这总是适用于预定义的数组。但是,如果我从字符串添加数组(在本例中为字符串“df”,或者从字符串创建数组,它不再将数组值映射到散列,我不明白为什么。我已经看看用字符串值填充数组的不同方法,但每次都会遇到同样的问题。

据我所知,“df”也应该映射到哈希。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

这是因为您将string.split(//)数组作为一个对象推送到array,因此您在array中的数字中有一个数组元素。

array = ["a", "b", "c"]
string = "df"
array.push (string.split(//))
 => ["a", "b", "c", ["d", "f"]]

为避免这种情况,您可以使用数组连接,例如

array = ["a", "b", "c"]
string = "df"
array += string.split(//)
=> ["a", "b", "c", "d", "f"]