2015-04-14 59 views
2

我在Ruby中有一个包含一些重复元素的数组。例如: -获取数组中重复元素的索引(Ruby)

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

当我执行以下操作:

fruits.index("apples") 
# returns 0 

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

+0

@CarySwoveland对不起,我本来还打算;忘了。你的回答很有用。谢谢。 – GDP2

+0

我很高兴听到这是。 –

回答

3

以从程序语言的网页,我们可以这样写:

fruits.each_index.select { |i| fruits[i]=="apples" } 
    #=> [0, 2, 4] 
3

你可以这样做:

fruits.to_enum.with_index.select{|e, _| e == "apples"}.map(&:last) 
# => [0, 2, 4] 
+0

不错的单线。你能否在.select {| e,_ |中解释“_”的用法... – grenierm5

+1

“_”只是表示变量不会被使用。 –

+0

请注意'_'确实是一个变量:'_ = 3;放置_#=> 3'。有些人喜欢写一些像'| e,_ndx |'的东西。 –

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]} 
相关问题