获取数组中重复元素的索引(Ruby)

时间:2015-04-14 20:09:45

标签: ruby arrays duplicates

我在Ruby中有一个包含一些重复元素的数组。 E.g:

fruits = ["apples", "bananas", "apples", "grapes", "apples"]

当我执行以下操作时:

fruits.index("apples")
# returns 0

我只是第一次出现"apples",在这种情况下,fruits[0]。有没有办法可以运行类似于上面的代码并获取"apples"的其他出现的索引?如果我不能运行类似于上面代码的东西,我怎样才能获得重复元素的索引?

3 个答案:

答案 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]}