将字符串每 2 个字符拆分为数组

Moh*_*bal 7 javascript arrays

我的代码有问题。我有一系列的字符串。例如我做了这个:

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)

有什么解决办法吗?提前致谢。

Ada*_*osz 7

更新了答案以解决问题主体

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

  • `'abcdefg'.match(/(..)/g)` 是一个更短的版本,尽管这不是 Mohammand 所要求的。 (3认同)

jav*_*net 3

希望这可以帮助。

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)

输出

  • 谢谢尼克·帕森斯,我使用了 Number() 函数。 (2认同)