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 =».