如果输入值为NaN,则返回零

时间:2016-06-23 17:45:58

标签: javascript math reactjs nan

是否有最佳方法可以阻止legend([h_A(1), h_Z(1)], {'a', 'z'}) ?我有数字输入字段,每当我清除该字段时,我得到NaN

NaN

现在我的渲染中有_amount: function(e) { var value = parseInt(e.target.value); var newValue = (value === NaN ? 0 : value); // Thought this could work }, <input type="number" value={this.state.amount} onChange={this_amount} /> 。事情是,当我清除输入字段时,金额状态为400 - this.state.amount。怎么预防这个?有可能当我清除该字段时我得到零吗?假设我输入null然后清除字段,弹出3

由于

2 个答案:

答案 0 :(得分:8)

  

NaN永远不等于NaN本身,因此依赖于Number.isNaN(value)方法。

_amount: function(e) {
  var value = parseInt(e.target.value);
  var newValue = (isNaN(value) ? 0 : value);

  //OR sorthand as `NaN` is falsey
  var value = parseInt(e.target.value) || 0;
}

isNaN函数

的必要性
  

与JavaScript中的所有其他可能值不同,不可能依赖等于运算符(=====)来确定值是否为NaN,因为两者都是NaN == NaNNaN === NaN评估为false。因此,isNaN函数的必要性。[Ref]

答案 1 :(得分:0)

我找到的最短路是

var number = (yourVariable || 0)

因为NaN是一个假名值,只要yourVariable为NaN,就会返回0。

检查数字是否为NaN的方法是使用isNaN函数。

isNaN(yourVariable); // Returns true is yourVariable is NaN

旁注:

上述方法也可用于多个问题。例如:从数组中获取值(可能不存在)并从2d数组中获取值。

从数组中获取值:

yourArray[i] || 0

i是您要访问的ID

从2D数组中获取值:

(yourArray[i] || [])[j] || 0

ij是数组中元素的位置