如果我们有一个具有一些重复值的数组,我们如何为这些值提供不同的索引号?例如,我们有array = ["a", "b", "c", "b", "e", "b", "d"]
。数组的索引是
0
1
2
1
3
1
4
我们如何将索引转换为:
0
1
2
3
4
5
6
答案 0 :(得分:1)
FYI:数组索引始终按升序从0
开始,即使数组包含重复值。根据您的预期输出,您的数组的索引仅从0
到6
。
> 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)
将始终返回数组中第一个元素。