ожидалось, что «0» будет равно «0» - PullRequest
0 голосов
/ 01 октября 2018
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 голосов
/ 02 октября 2018

Вы должны ввести другое условие, чтобы справиться с этим

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`;
}
0 голосов
/ 01 октября 2018

Если вы хотите, чтобы ваша функция возвращала 0, когда 0 передается в функцию, вам нужно будет ввести условие для обработки этого, например:

if (i === 0) {
   return 0;
}
0 голосов
/ 01 октября 2018

если вы собираетесь разделить неизвестный ввод, вы хотите проверить, может ли данный ввод быть нулевым.В противном случае может возникнуть исключение 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));
0 голосов
/ 01 октября 2018

Вы можете просто изменить эти строки

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

до

if (i == 0) {
return i
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...