如果数字大于1000,如何选择和使用最后的数字

时间:2017-01-10 15:18:34

标签: javascript

我有一个非常简单的代码和功能。 我的问题是:我想选择一个给定数字的最后一个数字,但是当我想要使用它时,它根本无法工作。

我在这个函数中的工作是使数字更具可读性,例如: 如果数字 1 ,则输出必须为第一;如果数字 3 ,则输出必须为 3 ;如果数字 402 ,则输出必须 402nd

function humanizeChar (number) {  
var lastOne = number.toString().split('').pop();
  if (lastOne === 1) {
    return number + 'st';
  } else if (lastOne === 2) {
    return number + 'nd';
  } else if (lastOne === 3) {
    return number + 'rd';
  } else {
    return number + 'th';
  } 
}
console.log(humanizeChar(1131)); // my output is 1131th

6 个答案:

答案 0 :(得分:1)

您正尝试将字符串(lastOne)与strict equality ===的数字进行比较,以比较值和类型。您可以使用simple equality ==或将数字更改为字符串:



function humanizeChar (number) {  
  var lastOne = number.toString().split('').pop();
  console.log(lastOne);
  if (lastOne === '1') {
    return number + 'st';
  } else if (lastOne === '2') {
    return number + 'nd';
  } else if (lastOne === '3') {
    return number + 'rd';
  } else {
    return number + 'th';
  } 
}
console.log(humanizeChar(1131)); // my output is 1131th




答案 1 :(得分:1)

试试这个,似乎你将输出字符串与数字进行比较:

function humanizeChar (number) {  
var lastOne = number.toString().split('').pop();
  if (lastOne === "1") {
    return number + 'st';
  } else if (lastOne === "2") {
    return number + 'nd';
  } else if (lastOne === "3") {
    return number + 'rd';
  } else {
    return number + 'th';
  } 
}
console.log(humanizeChar(1131)); // my output is 1131th

答案 2 :(得分:1)

您的问题是,您使用===运算符将字符串与数字进行比较。正如this中对SO所述的非常好的答案所述:

  

标识(===)运算符的行为与等式(==)完全相同   运算符除了没有进行类型转换,类型必须是   同样被认为是平等的。

因此,您可以手动将lastOne转换为数字(例如使用parseInt(lastOne)),也可以使用==运算符。或者,您可以将lastOne与字符串文字('1''2',...)进行比较。

答案 3 :(得分:1)

JavaScript比较运算符 运营商说明 ==等于 ===等值和相等的类型

在您的情况下,正确的运算符是'=='

答案 4 :(得分:1)

您需要对代码进行一些更改,如下所示: -

function humanizeChar (number) {
number = 7882;          //just give some number for checking
var lastOne = number.toString().split('').pop();
//console.log(lastOne);
  if (lastOne == 1) {
    return number + 'st';
  } else if (lastOne == 2) {
    return number + 'nd';
  } else if (lastOne == 3) {
    return number + 'rd';
  } else {
    return number + 'th';
  } 
}
console.log(humanizeChar());

答案 5 :(得分:1)

我们还需要计算最后一位数的第二位数。例如,101应该是一百一而不是一百和一百。

//Improving from Ori Drori's answer
function humanizeChar (number) {
    var numStrs = number.toString().split('');
    var lastOne = numStrs.pop();
    var isSeondFromLastGreaterThanZero = (numStrs.length > 0 && numStrs.pop() !== '0');
    var suffix = "th";

    if (!isSeondFromLastGreaterThanZero) {
        if (lastOne === '1') {
            suffix = 'st';
        } else if (lastOne === '2') {
            suffix = 'nd';
        } else if (lastOne === '3') {
            suffix = 'rd';
        }
    }

    return number.toString() + suffix;

}
console.log(humanizeChar(1131)); // my output is 1131th
console.log(humanizeChar(1101)); // 1101st
console.log(humanizeChar(2)); // 2nd