在Ruby中搜索项目的对象数组

时间:2015-09-03 14:35:59

标签: ruby-on-rails arrays ruby

我正在尝试在一个对象数组中搜索值,但是我无法使find_index工作。在我下面的代码中,我试图在数组中搜索名称(joseph)。这是最好的方法吗?我想在搜索并找到它之后返回该对象。

name = "joseph"

array = [{"login":"joseph","id":4,"url":"localhost/joe","description":null},
{"login":"billy","id":10,"url":"localhost/billy","description":null}]

arrayItem = array.find_index {|item| item.login == name}

puts arrayItem

1 个答案:

答案 0 :(得分:8)

您的数组包含一个哈希,其键是符号(在哈希中,key: value:key => value的简写)。因此,您需要将item.login替换为item[:login]

name = "joseph"

array = [{"login":"joseph","id":4,"url":"localhost/joe","description":nil},
{"login":"billy","id":10,"url":"localhost/billy","description":nil}]

arrayIndex = array.find_index{ |item| item[:login] == name }

puts arrayIndex

上面的代码检索所搜索对象在数组中的索引。如果您想要对象而不是索引,请使用find代替find_index

arrayItem = array.find{ |item| item[:login] == name }

另请注意,在Ruby中,null实际上称为nil