学习Ruby代码之美,我想知道在多维数组中是否有简单/直接的搜索。我有一个包含4个索引的多数组,其中包含各种数字。我想搜索每个索引匹配内容的另一个数组... seudo codez
multi_array = [ [1,3,7], [3,1,4], [1,3,4], [0,9,2]]
numbers_looking_to_match = [1,5,9]
multi_array.each do | elmt |
elmt.each_with_index do |elmt, idx|
if elmt == numbers_looking_to_match.each { |e| puts "match" }
end
end
我想让它返回一个新的多数组,其中删除了原始多数组的所有非匹配字符。
答案 0 :(得分:6)
使用Array#&
进行交叉,
multi_array.map {|a| a & numbers_looking_to_match }
答案 1 :(得分:1)
multi_array.each { |elem| numbers_looking_to_match.each { |x| elem.delete(x) if elem.include?(x)}
}
答案 2 :(得分:1)
擦除不需要的字符的每个元素:
require 'set'
multi_array=[ [1,3,7], [3,1,4], [1,3,4], [0,9,2]]
numbers_looking_to_match=Set.new([1,5,9])
scrubbed=multi_array.collect{ |el|
numbers_looking_to_match.intersection(el).to_a
}
puts scrubbed.inspect
# prints [[1], [1], [1], [9]]