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

Javascript 增加一个数字,但始终保留第一个数字,javascript,Javascript,所以第一个数字永远不会改变 原因是第一个数字是一个分类(1-9)。下面的数字是序列号 因此,199是分类“1”和序列号99。下一个序列号是1001。亨切:奇怪的逻辑(这不是我决定的) 有什么聪明的方法吗?有两个变量,前缀和数字: 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。亨切:奇怪的逻辑(这不是我决定的)


有什么聪明的方法吗?

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

Case 1:
input: 145
output: 146

Case 2:
input 199
output 1001

Case 3:
input: 59
output 501

Case 4:
input: 99
output: 901

这是小提琴:

将数字转换为字符串。获取第一个数字作为字符串的第一个字符,其余数字作为剩余字符。如果其余的都是9,则将其增加到0+1,否则只需向其添加1即可。然后将其与原始的第一个digitl连接起来

功能增量\u串行(输入){
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';
}否则{
newrest=parseInt(rest,10)+1;
}
先返回+newrest;
}
控制台日志(增量_序列(145));
控制台日志(增量_序列(199));
控制台日志(增量_序列(59));
控制台日志(增量_序列(99))
函数递增NumberAvingFirst(数字){
var numberAsString=number+“”;
incrementedNumber=parseInt(numbersString.slice(1))+1
返回parseInt(numbersString[0]+递增的数字);
}

警报(IncrementNumberAvingFirst(599))
如何协调案例4和“第一个数字永远不会改变”?我不明白案例2。199+1=>200=>保留第一个数字=>100,但为什么它是1001而不是1100?它不应该是199->1000和59->500和99->900吗?你需要清楚地解释逻辑。我想如果你这样做了,你应该会发现你也能够对它进行编程,因为编程只是将逻辑转换成一种语言。请在演示中使用堆栈片段而不是JSFIDLE。
var prefix = "5";
var number = 99;
var output = prefix + number;
alert(output);
number = number + 1;
output = prefix + number;
alert(output);