增加一个数字,但始终保持第一个数字

时间:2017-08-31 21:37:50

标签: javascript

Case 1:
input: 145
output: 146

Case 2:
input 199
output 1001

Case 3:
input: 59
output 501

Case 4:
input: 99
output: 901

所以第一个数字永远不会改变。

原因是第一个数字是分类(1-9)。以下是序列号。

所以199是分类'1'和序列号99.下一个序列号是1001.Henche奇怪的逻辑(我没有决定这个)。

任何聪明的方法吗?

3 个答案:

答案 0 :(得分:3)

将数字转换为字符串。获取第一个数字作为字符串的第一个字符,其余数字作为剩余字符。如果其余全部为9,则将其增加到多个0 + 1,否则只需加1即可。然后将其与原始的第一个数字

连接起来

function increment_serial(input) {
  var str = input.toString();
  var first = str[0];
  var rest = str.substr(1);
  if (rest.match(/^9+$/)) {
    var newrest = rest.replace(/9/g, '0') + '1';
  } else {
    newrest = parseInt(rest, 10) + 1;
  }
  return first + newrest;
}

console.log(increment_serial(145));
console.log(increment_serial(199));
console.log(increment_serial(59));
console.log(increment_serial(99));

答案 1 :(得分:0)

有两个变量,前缀和数字:

var prefix = "5";
var number = 99;
var output = prefix + number;
alert(output);
number = number + 1;
output = prefix + number;
alert(output);

这是小提琴:https://jsfiddle.net/xedret/0ujgjsbj/

答案 2 :(得分:0)

function incrementNumberLeavingFirst(number) {
    var numberAsString = number+"";
    incrementedNumber = parseInt(numberAsString.slice(1))+1
    return parseInt(numberAsString[0]+incrementedNumber);
}

alert(incrementNumberLeavingFirst(599))

我们取一个整数number作为函数的第一个参数。这是我们想要增加的数字。

在JavaScript中将字符串添加到整数会将整数转换为字符串,因此我们通过向其添加空字符串来获取number参数的字符串版本,并将其存储在变量{{1}中}。

然后,我们使用numberAsString除了第一个字符之外的所有字符串,使用numberAsString.slice(1)将其转换为整数,然后添加一个。这会增加数字(不包括第一个数字)。我们将递增的数字存储在名为parseInt的变量中。

最后,我们将数字的第一个数字连接到递增的数字(请注意,第一个数字仍然是一个字符串,因此这会将incrementedNumber转换为字符串,并将第一个数字添加到该字符串的开头然后我们使用incrementedNumber将整个事物转换为整数,并返回它。