我正在尝试使用基于哈希值的数组和散列的交集来填充数组:
array2 = ["hi","world","One"]
VALS = {:one => "One", :two => "Two"}
array2 = VALS.values & array2
print array2
适用于哈希值和array2[i]
的交集,但如果我想填充来自array2[i+1]
的{{1}}元素,我就迷失了。
也尝试过:
array2
但没有运气。
有什么想法吗?
答案 0 :(得分:0)
array = []
array2.each_with_index{|v,i| array << (VALS.has_value? i ? array2[i+1] : nil)}
答案 1 :(得分:0)
听起来像是你试图将你的数组视为一系列内部键和值,或者将外部键视为val的反转。因此,您的示例的正确结果将是:
{"hi" => "World", "One" => :one}
是吗?如果是这样,请点击这里:
invertedvals = vals.invert
Hash[*array2.map {|x| [x,invertedvals[x]]}.flatten.compact]
如果没有,请澄清你想要产生的结果......
答案 2 :(得分:0)
以下是我最终得到的答案:
array1.each do |i|
puts "#"*5 + i + "#"*5 if !array2.include? i
if array2.include? i
result << i+":" << array2[array2.index(i)+1]
end
end
有更快的算法吗?想用:
array1 & array2
同样在一点使用注入,基准测试显示其中任何一个之间的差别很小。