ano*_*non 5 ruby arrays compare
假设我必须(小到中)数组:
tokens = ["aaa", "ccc", "xxx", "bbb", "ccc", "yyy", "zzz"]
template = ["aaa", "bbb", "ccc"]
Run Code Online (Sandbox Code Playgroud)
如何确定是否tokens包含template相同顺序的所有条目?
(请注意,在上面的示例中,应忽略第一个"ccc",由于最后一个"ccc"而导致匹配.)
我认为最干净的方法是通过递归来做到这一点:
class Array
def align(other)
if pos = index(other.first)
other.size == 1 || slice(pos..-1).align(other.drop(1))
end
end
end
Run Code Online (Sandbox Code Playgroud)
所以:
[1,2,3,4,3,2,1].align([1,2,3])
=> true
[1,2,3,4,3,2,1].align([1,4,1])
=> true
[1,2,3,4,3,2,1].align([1,4,2,3])
=> nil
Run Code Online (Sandbox Code Playgroud)