С учетом хэша ...
hash = {1 => 100, 2 => 101, 3 => 102, 4 => 103}
Вы можете получить значения в этом хэше в порядке вставки , используя .values
:
hash.values # => [100, 101, 102, 103]
AВ этот момент вы можете использовать простое равенство, чтобы проверить, равны ли значения вашему массиву:
hash = {1 => 100, 2 => 101, 3 => 102, 4 => 103}
array = [100, 101, 102, 103]
hash.values == array # => true
Это зависит от порядка вставки ключей в ваш хэш.В зависимости от того, как построен ваш хэш, вам может потребоваться порядок сортировки ключей, например:
hash = {4 => 103, 2 => 101, 3 => 102, 1 => 100 }
hash.values # => [103, 101, 102, 100]
Если вы хотите, чтобы значения были в порядке возрастания в соответствии с их соответствующими ключами, выможно превратить хэш в массив из [key, value]
пар и отсортировать по ключу:
hash = {4 => 103, 2 => 101, 3 => 102, 1 => 100 }
hash.to_a # => [[4, 103], [2, 101], [3, 102], [1, 100]]
hash.to_a.sort(&:first) . # => [[1, 100], [2, 101], [3, 102], [4, 103]]
hash.to_a.sort(&:first).map(&:last) # => [100, 101, 102, 103]
hash.to_a.sort(&:first).map(&:last) == array # => true
Если ваши ключи хеша всегда последовательно возрастают, начиная с 1
, то вы можете взять полностьюдругой подход и итерации по вашему массиву, и для каждого индекса массива сравните значение в hash[index + 1]
:
hash = {1 => 100, 2 => 101, 3 => 102, 4 => 103}
array = [100, 101, 102, 103]
array.each.with_index(1).all? { |item, index| item == hash[index] } # => true