首页 > 解决方案 > 在 Ruby 中,有没有办法在由结构组成的数组中获取项目的索引?

问题描述

使用普通数组,我可以使用arrayname.find_index('whatimlookingfor')来获取数组中的位置。

当数组的元素是 Struct 时,我不知道该怎么做。

场景:我有一个由 ID 和文件名组成的结构。在一个函数中,我需要在该数组中找到与我当前正在处理的文件不同的文件的 ID。我知道另一个文件名,所以我希望我可以做类似的事情:

arrayname.filename.find_index(parsedfilename)

但这显然失败了。如果不遍历整个数组,有没有办法快速引用匹配发生位置的索引?还是我运气不好,因为数组是结构的集合?

标签: ruby

解决方案


index(same as find_index) 需要一个块,您可以在其中为您的查找器编写任何真/假逻辑。要查找文件名不匹配的第一个项目的索引parsedfilename...

found_index = items.index { |item| item.filename != parsedfilename }

许多与 Arrays 和Enumerables一起使用的方法也使用块。


推荐阅读