我在Ruby中有一个包含一些重复元素的数组。 E.g:
fruits = ["apples", "bananas", "apples", "grapes", "apples"]
当我执行以下操作时:
fruits.index("apples")
# returns 0
我只是第一次出现"apples"
,在这种情况下,fruits[0]
。有没有办法可以运行类似于上面的代码并获取"apples"
的其他出现的索引?如果我不能运行类似于上面代码的东西,我怎样才能获得重复元素的索引?
答案 0 :(得分:8)
从程序语言中获取页面,我们可以写:
fruits.each_index.select { |i| fruits[i]=="apples" }
#=> [0, 2, 4]
答案 1 :(得分:3)
你可以这样做:
fruits.to_enum.with_index.select{|e, _| e == "apples"}.map(&:last)
# => [0, 2, 4]
答案 2 :(得分:0)
fruits = ["apples", "bananas", "apples", "grapes", "apples"]
p fruits.each_with_index.group_by{|f,i| f}.each{|k,v| v.map!(&:last)}
# => {"apples"=>[0, 2, 4], "bananas"=>[1], "grapes"=>[3]}