在字符串中拆分数字和字母

Gra*_*ams 0 javascript

假设我有以下字符串:

"22N"
"3X"
"-12X"
"12T"
"123123T"
Run Code Online (Sandbox Code Playgroud)

现在,我想将numbers和拆分alphabets成对数组:

[22, "N"]
[3, "X"]
[-12, "X"]
[12, "T"]
[123123, "T"]
Run Code Online (Sandbox Code Playgroud)

我试过的

var first = parseInt(input.substring(0, input.length - 1));
var last = input.slice(-1);
Run Code Online (Sandbox Code Playgroud)

这行得通,但是有什么更快的方法,因为我必须处理数百万个数据。

注意alphabets单个字符,始终为最后一个字符。

Shi*_*rsz 6

好吧,MDN接下来说一元加

一元加号是将某物转换为数字的最快且首选的方式

如果您相信,可以采取以下方法:

let tests = ["22N", "3X", "-12X", "12T", "123123T"];

const splitNumLetter = (str) => [+str.slice(0, -1), str.slice(-1)];

tests.forEach(s => console.log(splitNumLetter(s)));
Run Code Online (Sandbox Code Playgroud)
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
Run Code Online (Sandbox Code Playgroud)

也许str.charAt(str.length - 1)比更快str.slice(-1)。您可以检查以下比较好的性能:https : //jsperf.com/charat-vs-index/5