Есть ли способ получить N-й ключ или значение упорядоченного хэша, кроме преобразования его в массив? В Ruby 1.9.x У меня есть хэш, который сохраняет свой порядок hsh = {9=>2, 8=>3, 5=>2, 4=>2, 2=>1} Есть ли способ получить ключ третьего элемента, кроме этого: hsh.to_a[2][0] Ответ 1 Попробуйте использовать Hash#keys и Hash#values: thirdKey = hsh.keys[2] thirdValue = hsh.values[2] Ответ 2 Почему вы используете хеш вместо массива? Массив идеально подходит для упорядоченных коллекций. array = [[9, 2], [8, 3], [5, 2], [4, 2], [2, 1]] array.each { |pair| puts pair.first } Сортировка массивов очень проста, в конечном счете. disordered_array = [[4,2], [9,2], [8,3], [2,1], [5,2]] disordered_array.sort { |a,b| b <=> a } => [[9, 2], [8, 3], [5, 2], [4, 2], [2, 1]] Исправьте меня, если я ошибаюсь.
Ответ 1 Попробуйте использовать Hash#keys и Hash#values: thirdKey = hsh.keys[2] thirdValue = hsh.values[2]
Ответ 2 Почему вы используете хеш вместо массива? Массив идеально подходит для упорядоченных коллекций. array = [[9, 2], [8, 3], [5, 2], [4, 2], [2, 1]] array.each { |pair| puts pair.first } Сортировка массивов очень проста, в конечном счете. disordered_array = [[4,2], [9,2], [8,3], [2,1], [5,2]] disordered_array.sort { |a,b| b <=> a } => [[9, 2], [8, 3], [5, 2], [4, 2], [2, 1]] Исправьте меня, если я ошибаюсь.