Ruby,具有相同值和不同索引号的数组

时间:2015-09-01 04:43:44

标签: arrays ruby

如果我们有一个具有一些重复值的数组,我们如何为这些值提供不同的索引号?例如,我们有array = ["a", "b", "c", "b", "e", "b", "d"]。数组的索引是

0 1 2 1 3 1 4

我们如何将索引转换为:

0 1 2 3 4 5 6

2 个答案:

答案 0 :(得分:1)

FYI:数组索引始终按升序从0开始,即使数组包含重复值。根据您的预期输出,您的数组的索引仅从06

> array = ["a", "b", "c", "b", "e", "b", "d"]
#=> ["a", "b", "c", "b", "e", "b", "d"] 
> array.each_with_index{|e,i| p "#{e} at index => #{i}"}
# "a at index => 0"
# "b at index => 1"
# "c at index => 2"
# "b at index => 3"
# "e at index => 4"
# "b at index => 5"
# "d at index => 6"

即使这将返回相同的输出:

> array.each_with_index{|e,i| p "#{array[i]} at index => #{i}"}

答案 1 :(得分:0)

您可能误解了array.index(object)方法。它始终给出第一次出现的索引。即始终是第一个重复元素的索引。查看更多详情Array index method

根据您在评论中提供的代码,您正在使用

 def add(*args)
   $i =[]
   for x in args
     puts args.index(x)
   end
 end 
 add(8, 2, 6, 6, -6, -11, 6, 4, -4, -17, -17, -8, -10, 11, 20, 10, 4)

args.index(x)将始终返回数组中第一个元素。