Получение индекса части элемента массива - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть массив как:

array = ["username=stackoverflow", "password=12345", "id= 6"]

Мое желание ищет " id " в array и получить индекс элемента " id=6", который равен 2.

Это возможно? Как я могу получить индекс части элемента массива?

Ответы [ 4 ]

0 голосов
/ 13 сентября 2018
array.to_enum.with_index.find{|e, _| e.match?(/id/)}.last
# => 2
0 голосов
/ 13 сентября 2018
array = ["username=stackoverflow", "password=12345", "id= 6"]
array.index{ |i| i["id"] }
#=> 2
array.index{ |i| i["non-existing"] }
#=> nil

index принимает либо блок, либо элемент и возвращает индекс элемента в массиве или индекс первого истинного приложения с предикатами.

array.index("id= 6")
#=> 2

В нашем случае мы используем блок в качестве предиката. Этот блок будет применен ко всем элементам в массиве. Блок выглядит как i["id"], что является сокращением для получения подстроки "id" в строке. Итак, мы ищем первый элемент с подстрокой «id».

Как указано в комментариях ниже, вы можете получить некоторые ложные срабатывания с помощью метода curent. Например, строка «username = Midas» также имеет подстроку id, поэтому вам лучше использовать более строгий шаблон, такой как i[/^id=/] (thx @Stefan), чтобы идентифицировать только те строки, которые начинаются с подстроки «id =».

0 голосов
/ 13 сентября 2018
array = [ "username=stackoverflow", "password=12345", "id= 6"]
array.find_index { |e| e.split(/\s*=\s*/)[0] == 'id' }

Это разделит каждый элемент на знак равенства, возможно, окруженный пробелом, и вернет индекс, если первая часть разделения равна 'id'.Если вы хотите сделать это несколько раз, почти наверняка было бы лучше преобразовать это в структуру, которую легче найти, например, в хэш.

0 голосов
/ 13 сентября 2018

В массиве нет информации об именах переменных, которые вы используете для инициализации массива.Массив просто хранит значения.

Используйте взамен Hash, что позволяет хранить ключ и значения:

hash = { username: 'stackoverflow', password: 12345, id: 6 }
hash[:id]
#=> 6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...