预期“ 0th”等于“ 0”

时间:2018-10-01 01:49:52

标签: javascript unit-testing

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";
}

没有通过这项测试,怎么了?

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

4 个答案:

答案 0 :(得分:0)

您可以更改这些行

if (j == 0 && k == 100) {
return '0th';
}

成为

if (i == 0) {
return i
}

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果您要提供未知输入,则要检查给定的输入是否为零。否则可能会引发devisionbyzero异常。

function numberToOrdinal(i) {
	if(i === 0){	// since we devide i we wanna check if it might be zero. 
		return i ;
	}
	var j = i % 10,
	k = i % 100;
	//if (j == 0 && k == 100) { didnt seem to be doing anything
	   //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";
}
console.log(numberToOrdinal(0));

答案 3 :(得分: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`;
}