使用Ruby:为什么我的数组打印结果然后是一个带有idex数字的数组

时间:2016-11-09 20:35:19

标签: arrays ruby indexing

我有两种方法:

pwsplayerindex找到一个多次出现在数组中的人,并给出其姓名所在的索引。

statarray使用pwsplayerindex中的索引#来查找包含哈希值的数组中的其他数据。

def pwsplayerindex(inplayer)
arr = Array.new
pwsarr.each_with_index do |val,index|
if val['player'] == inplayer then arr << index end
end
    arr
end

def statarray(index,stat)
indexarr = Array.new 
pwsplayerindex((pwsarr[index]['player'])).each { |x| puts (pwsarr[x][stat])}   
end  

 print statarray(0,'play')

为什么结果会产生:

51.0
29.9
29.4
28.1
24.6
16.6
[0,82,88,113,192,472]

我希望它给我的是:

51.0
29.9
29.4
28.1
24.6
16.6

2 个答案:

答案 0 :(得分:2)

puts statarray(0,'play')

应该只是

statarray(0,'play')

否则你打印函数的返回值,这是整个数组(因为each方法)

答案 1 :(得分:0)

这就是我拍摄的内容:

def pwsplayerindex(inplayer)
arr = []

  pwsarr.each_with_index do |val,index|
    if val['player'] == inplayer then arr << index end
  end
  arr
end

def statarray(i,stat)
indexarr = Array.new

  pwsplayerindex((pwsarr[i]['player'])).each do |x|
    indexarr << pwsarr[x][stat]
  end
    indexarr
end 

puts statarray(0,'play')

这给了我在原始问题中的目标。这是一个简单的修复。我没有意识到我正在使用该方法进行打印。