Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从ruby数组中删除NaN_Ruby - Fatal编程技术网

无法从ruby数组中删除NaN

无法从ruby数组中删除NaN,ruby,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, N

我有一个值数组

=> [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]
当我运行此脚本删除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
我遗漏了什么?

如果删除一个项目并移动到下一个索引,则会向前移动两个项目,因为当前索引中的项目不再存在

幸运的是,有一种更好的方法,使用:

如果删除一个项目并移动到下一个索引,则向前移动两个项目,因为当前索引中的项目已不存在

幸运的是,有一种更好的方法,使用:


与其尝试删除它们,不如修改代码,这样就不会生成它们。使用
select
reject
对导致NaN的值进行预测试。在
if nummarray..
之前插入
p“num_array={num_array}”
以查看发生了什么。你是说
“NaN”
还是
:NaN
?如前所述,
Nan
是常量的值或该名称的方法返回的值。如果,正如我所怀疑的,
Nan
是一个文本,请编辑。顺便说一句,在Ruby中,变量和方法(例如,
num_array
)的名称通常使用“snake case”(所有小写字母和下划线)。与其尝试删除它们,不如修改代码,这样就不会生成它们。使用
select
reject
对导致NaN的值进行预测试。在
if nummarray..
之前插入
p“num_array={num_array}”
以查看发生了什么。你是说
“NaN”
还是
:NaN
?如前所述,
Nan
是常量的值或该名称的方法返回的值。如果,正如我所怀疑的,
Nan
是一个文本,请编辑。顺便说一句,在Ruby中,变量和方法的名称通常使用“snake case”(所有小写字母和下划线)(例如,
num_array
)。
numArray.reject! &:nan?