【发布时间】:2022-01-21 12:38:08
【问题描述】:
我正在尝试创建一个新数组,其中原始数组的元素被替换为哈希中的相应值。我想将 arr 中的每个元素与 hash 中的键进行比较,如果它们相等,则将它们铲入 arr 并在最后返回。为什么我的代码不起作用,如何访问/返回哈希中相应条目的键值,而不仅仅是键指向的值?如果你明白我在说什么。
def element_replace(arr, hash)
count = []
for i in arr do
if i == hash.key
count << value
else
count << i
end
end
return count
end
arr1 = ["LeBron James", "Lionel Messi", "Serena Williams"]
hash1 = {"Serena Williams"=>"tennis", "LeBron James"=>"basketball"}
print element_replace(arr1, hash1) # => ["basketball", "Lionel Messi", "tennis"]
puts
arr2 = ["dog", "cat", "mouse"]
hash2 = {"dog"=>"bork", "cat"=>"meow", "duck"=>"quack"}
print element_replace(arr2, hash2) # => ["bork", "meow", "mouse"]
puts
【问题讨论】:
-
另一种方式:
Hash.new { |h,k| h[k] = k }.merge(hash1).values_at(*arr1) #=> ["basketball", "Lionel Messi", "tennis"]. -
您的代码不起作用,因为
hash.key返回第一个键值对的键。你想hash.has_key?(i)。value也没有初始化,只是nil。
标签: arrays ruby string dictionary hashtable