2017-08-31 69 views
2
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奇怪的逻辑(我没有决定这一点)。

这样做的任何聪明的方式?

+2

您如何协调您的案例#4和“*第一个数字应该永远不会更改*”? –

+2

我没有得到案例2. 199 + 1 => 200 =>保留第一位数字=> 100 –

+0

@ PM77-1,它是9 – Per

回答

3

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

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));

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/

+1

请使用Stack Snippet代替jsfiddle进行演示。 – Barmar

0

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

 
alert(incrementNumberLeavingFirst(599))

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

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

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

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