无法从ruby数组中删除NaN

Keo*_*eon 1 ruby

我有一系列的价值观

=> [0.0, 4.76, 0.0, Infinity, NaN, 2.63, 0.74, 10.0, NaN, NaN, NaN, NaN, 0.0, NaN, NaN, NaN, NaN, NaN, Infinity, 5.26, NaN, 0.0, NaN, 3.45, 2.5, NaN, 10.0, 0.0, NaN, 2.94, NaN, NaN, 0.0, 2.04, 0.0, 11.11, NaN, NaN, 1.23, NaN, NaN, 11.11, NaN, NaN, NaN, 0.0, 9.68, NaN, NaN, 10.0, 5.0, 3.7, 10.0, Infinity, 0.0, 0.0, 1.41, NaN, 3.45, NaN]
Run Code Online (Sandbox Code Playgroud)

当我运行这个脚本来删除NaN时,它删除了一些但不是所有的NaN.

  def remove_from_array(numArray)
    numArray.inject(0) do |i|
      if numArray[i].nan?
        numArray.delete_at(i)
      end
      i += 1
    end
   numArray
  end
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Ry-*_*Ry- 6

如果删除某个项目移至下一个索引,则会提前移动两个项目,因为当前索引处的项目不再存在.

幸运的是,有一种更好的方法,使用Array#reject!:

numArray.reject! &:nan?
Run Code Online (Sandbox Code Playgroud)