我的代码有问题。我有一系列的字符串。例如我做了这个:
var a = 12345678
Run Code Online (Sandbox Code Playgroud)
我想将这些字符串分割成一个数组,这样它就会产生如下所示的结果:
[12,23,34,45,56,67,78]
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这段代码:
var newNum = a.toString().match(/.{1,2}/g)
Run Code Online (Sandbox Code Playgroud)
它返回这个结果而不是我想要的结果
[12,34,56,78]
Run Code Online (Sandbox Code Playgroud)
有什么解决办法吗?提前致谢。
'1234567'.split('').map((e,i,a) => a[i] + (a[i+1] ?? '')).slice(0,-1);
// Array(6) [ "12", "23", "34", "45", "56", "67" ]
Run Code Online (Sandbox Code Playgroud)
编辑:我现在看到这并不能回答问题正文中描述的问题。不过,我会保留它,因为它解决的问题很可能由问题标题来描述。
最短路线:
'abcdefg'.split(/(..)/g).filter(s => s);
// Array(4) [ "ab", "cd", "ef", "g" ]
Run Code Online (Sandbox Code Playgroud)
解释:split(/(..)/g)每两个字符分割字符串(有点),据我了解,捕获的任意两个字符组(..)在此处充当前瞻(出于我不知道的原因;如果有人有解释,欢迎对此答案做出贡献)。这导致Array(7) [ "", "ab", "", "cd", "", "ef", "g" ]剩下要做的就是用 清除空子字符串filter(s => s)。
希望这可以帮助。
var a = 12345678;
a= a.toString();
var arr=[];
for (var i =0; i<a.length-1; i++) {
arr.push(Number(a[i]+''+a[i+1]));
}
console.log(arr);Run Code Online (Sandbox Code Playgroud)