Javascript 预期';第0次&x27次;等于';0';

Javascript 预期';第0次&x27次;等于';0';,javascript,unit-testing,Javascript,Unit Testing,它没有通过这个测试,怎么了 应该处理个位数 预期“0”等于“0”您只需更改这些行即可 if(j==0&&k==100){ 返回“0”; }如果希望在将0传递给函数时函数返回0,则需要输入一个条件来处理该问题,例如: function numberToOrdinal(i) { var j = i % 10, k = i % 100; if (j == 0 && k == 100) { return '0th'; } if (

它没有通过这个测试,怎么了

应该处理个位数
预期“0”等于“0”

您只需更改这些行即可

if(j==0&&k==100){
返回“0”;

}
如果希望在将0传递给函数时函数返回0,则需要输入一个条件来处理该问题,例如:

function numberToOrdinal(i) {
    var j = i % 10,
    k = i % 100;
    if (j == 0 && k == 100) {
        return '0th';
    }
    if (j == 1 && k != 11) {
        return i + "st";
    }
    if (j == 2 && k != 12) {
        return i + "nd";
    }
    if (j == 3 && k != 13) {
        return i + "rd";
    }
    return i + "th";
}

如果你要设置一个未知的输入,你要检查给定的输入是否为零。否则可能会引发devisionbyzero异常

函数编号序号(i){
如果(i==0){//既然我们设定了i,我们想检查它是否可能是零。
返回i;
}
var j=i%10,
k=i%100;
//如果(j==0&&k==100){似乎什么都没做
//返回“0”;
//}
如果(j==1&&k!=11){
返回i+“st”;
}
如果(j==2&&k!=12){
返回i+“nd”;
}
如果(j==3&&k!=13){
返回i+“rd”;
}
返回i+“th”;
}

控制台日志(序号(0))您必须输入另一个条件来处理它

if (i === 0) {
   return 0;
}

那么,
numberToOrdinal(0)
将正确输入
return
语句。。。您是否希望返回
0
,而不是第0个
0
?除了
0
之外,永远不会为任何内容输入条件,但是…当使用
0
作为参数调用时,您的代码将返回
0th
。。。但是不是从
if(j==0&&k==100)
-这永远不会是真的,似乎你想要
if(i==0){return'0';}
——并删除那毫无意义的(而且永远不会是真的)
if(j==0&&k==100){
即使我单独使用0作为字符串,它仍然会带来相同的错误。测试是什么?应该处理期望“0th”等于“0”的单个数字。这就是上面的错误,我需要通过一些隐藏单元测试。我不得不说,你接受一个不能解决问题的答案有点奇怪。如果你不显示,就很难给出正确的答案告诉我们测试的样子。
function numberToOrdinal(i) {
    var j = i % 10,
        k = i % 100;

    if (i === 0) {
        return i;
    }

    if (j == 1 && k != 11) {
        return `${i}st`;
    }

    if (j == 2 && k != 12) {
        return `${i}nd`;
    }

    if (j == 3 && k != 13) {
        return `${i}rd`;
    }
    return `${i}th`;
}