У меня есть этот хэш:
{"path_1" => [1,2,3], "path_2" => [1,4,5], "path_3" => [1,2,3,4]}
Я хочу удалить все "частичные" пути из хеша. Так что path_1
нужно будет идти, потому что это часть path_3
; [1,2,3]
является "незаконченным" массивом [1,2,3,4]
. Все "частичные" должны быть удалены из этого хеша.
Вот мой текущий код, который работает, но работает медленно при работе с большими хэшами:
# hash sorted by length of value
hash_array = {"path_1" => [1,2,3], "path_2" => [1,4,5], "path_3" => [1,2,3,4]}
# make a separate copy of the hash
cloned_hash_array = hash_array.clone
hash_array.each {|path_index, path|
# delete this path from the cloned hash so it doesn't match itself
cloned_hash_array.delete(path_index)
cloned_hash_array.each{|cloned_path_index, cloned_path|
if cloned_path[0,path.length] == path.clone
hash_array.delete(path_index)
end
}
}