Как получить индекс ключа в хеше? - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь получить индекс ключа в хэше.

Я знаю, как сделать это в массиве:

arr = ['Done', 13, 0.4, true]

a = arr.index('Done')

puts a

Есть ли способ или какой-то способ сделать это примерно так с ключом в хэше?Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Хэши обычно не рассматриваются как упорядоченные структуры, они просто имеют список ключей и значений, соответствующих этим ключам.

Это правда, что хэши в Ruby технически упорядочены, но очень редко существует реальный вариант использования их как таковых.

Если вам нужно найти ключ соответствует значению в хэше, вы можете просто использовать Hash # key метод:

hash = { a: 1, b: 2 }
hash.key(1) # => :a

Я полагаю, вы могли бы использовать hash.keys.index(hash.key(1)) дляполучить 0, поскольку это первое значение, но опять же, я бы не советовал делать это, потому что это не типичное использование структуры данных

0 голосов
/ 23 октября 2018

Есть как минимум пара способов получить эту информацию, 2, которые приходят на ум, это метод Enumerable find_index, чтобы передать каждый элемент в блок и проверить ваш ключ:

hash.find_index { |key, _| key == 'Done' }

или вы можете получить все keys из своего хэша в виде массива, а затем посмотреть индекс, как вы это делали:

hash.keys.index('Done')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...