如果变量是NaN,则创建一个将变量返回到ZERO的函数

时间:2014-12-29 12:49:33

标签: javascript function

如果变量计算返回" NaN" " 0" p>

如果变量"> 0"

,代码似乎只会执行

这是我的代码:

function changeNumber() {
    var average = Math.round((list.rating[0].score)/(list.rating[0].votecount));
    if (isNaN(average))
        return average =0;
    console.log("output"    +average);
}

所以基本上我从数据库中获取一些数字数据并进行计算" score / votecount" ,它返回某些内容的平均值。如果数据库中的"得分" " votecount" 字段不包含任何数据,那么我的计算将返回&#34 ; NaN的" 即可。我想将此" NaN" 更改为数字" 0"。

任何有助于此项运行的帮助都非常感谢。

p.s如果数据库中没有可计算的数字,这是完全正常的,因为这意味着某些东西尚未被投票。 (只是因为你想知道为什么我首先有一个NaN值)

3 个答案:

答案 0 :(得分:0)

function changeNumber() 
{
  var average = Math.round((list.rating[0].score)/(list.rating[0].votecount));
  return isNaN(average) ? 0 : average;
}

答案 1 :(得分:0)

// sample initialization
var score = 10;
var votecount = 'abc';

// first do the division
var division = score/votecount;

// check the division if it is NaN
if(isNaN(division))
  alert('zero'); // or return 0;
else{
  division = Math.round(division); // use division for the rest of the code
  alert(division);
}

请注意,如果除法是NaN,Math.round()将无效。

答案 2 :(得分:0)

首先计算平均值,然后使用Math.round进行舍入(如果适用):

var num1 = changeNumber(101, 'foo');
var num2 = changeNumber(101, 12);

// using short circuit boolean evaluation 
var num3 = Math.round(101/'bar' || 0);
var num4 = Math.round(101/25 || 0);


Helpers.log2Screen('`num1`: ', num1, '<br>`num2`: ', num2,
                   '<br>`num3`: ', num3, '<br>`num4`: ', num4);


function changeNumber(n1, n2) {
    var calc = n1/n2;
    return !isNaN(calc) ? Math.round(calc) : 0;
    // you can also do this in one line using
    // short circuit boolean evaluation (see num3):
    // return Math.round(n1/n2 || 0);
}
<script src="http://kooiinc.github.io/JSHelpers/Helpers-min.js"></script>